1

我的网站与django-markdownx完美配合,除非我上传图片。

当我在 markdownx 表单上拖放图像时,自动生成的图像 url 以如下形式添加:

在此处输入图像描述

如您所见,图像显示得很好。我的存储是 AWS s3,我使用的是私有存储桶。

然而,问题发生在一个小时后。在markdown url查询参数X-Amz-Expires=3600中,是一个小时。所以在那之后 url 不再有效,说请求已经过期。

在此处输入图像描述

这是另一个过期的网址,但你明白了。

我使用django-storages, boto3,AWS S3进行文件存储。根据 django-storages 文档,

AWS_QUERYSTRING_EXPIRE(可选;默认为 3600 秒)

生成的 URL 有效的秒数。

我可能会像SO 的其他帖子中建议的那样延长到期时间,但这是否意味着我应该在每个超长的时间段内至少更新一次?这似乎不是正确的方法。

有人建议公开 S3 存储桶,但我不想让任何人下载我的图像。

我深入研究了django-markdownx doc和 github,但没有取得太大进展。

使用 djang-markdownx 上传图片时,如何获得动态制作的预签名 URL?让我知道我是否遗漏任何东西或欢迎任何建议。

下面是我的 django 文件

# settings.py

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

AWS_ACCESS_KEY_ID = os.getenv('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.getenv('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.getenv('AWS_STORAGE_BUCKET_NAME')

AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None

AWS_S3_REGION_NAME = "ap-northeast-2"
# AWS_S3_SIGNATURE_VERSION = "s3v4"
# AWS_QUERYSTRING_AUTH = False

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

4

0 回答 0