gpt4 book ai didi

django - 防止强制下载 AWS S3 文件 Django

转载 作者:行者123 更新时间:2023-12-05 06:19:13 24 4
gpt4 key购买 nike

我正在使用

storages.backends.s3boto3.S3Boto3Storage

用于在我的 Django 项目中上传文件的存储后端。

模型中的字段声明:

document = models.FileField(upload_to=s3_directory_path.user_directory_path)

用户目录路径

def user_directory_path(instance, filename):
# TODO: Try to include this along with check filetype on the request object
document = instance.document
mime = magic.from_buffer(document.read(), mime=True)
extension = mimetypes.guess_extension(mime, strict=False)
file_name = str(uuid.uuid4()) + extension
document.seek(0)
return os.path.join("users", str(instance.user.id), file_name)

文档保存工作正常,但生成的链接强制下载文件。我怎样才能避免这种情况?

最佳答案

看看this answer关于通过 HTTP 响应 header 强制文件下载的一般问题。另见 MDN docs about Content-Disposition .

您能否向我们展示您在访问文档 URL 时获得的响应 header ?看看 S3 如何传送您的文件会很有趣。

如果您无法更改 S3 中的 header ,您可以选择编写代理文件下载的 Django View 。或者,将您的网络服务器(即 NGINX)配置为充当代理并设置所需的 header 。

对于 Django,this section of the docs将向您展示如何设置标题。

response = HttpResponse(
document,
headers={
'Content-Type': mimetype,
'Content-Disposition': f'attachment; filename="{document.name}"',
}
)

关于django - 防止强制下载 AWS S3 文件 Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60882825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com