首页 > 解决方案 > 如何从我的 Django 网站下载文件?

问题描述

我有一个小型 django 网站,允许上传托管在 pythonanywhere 上的文件。文件上传到 aws s3。

现在的问题是,即使在 html 中存在下载属性,浏览器仍然呈现文件而不是下载它

<a download href="{{file_url}}">Download</a>

标签: htmldjango

解决方案


来自Mozilla 开发者网络锚元素参考

“....下载仅适用于同源 URL,或 blob: 和 data: 方案...”

您的 aws s3 链接很可能与您的站点不同源(相同的域等)。

如果这是您遇到的问题,我想到的一种解决方法是,您可以在您的网站上创建一个接收文档标识符的传输 url,从 aws s3 下载,然后将其内容作为响应转发。通过这种方式,您还可以控制可能需要显式设置以使浏览器按照您想要的方式运行的内容类型之类的标头。

另外,如果您决定采用这样的解决方案,您必须采取预防措施来控制传输 url 的请求内容,并且只传输您的网站打算传输的内容。否则,您将打开一个类似于“打开重定向”漏洞的漏洞。


推荐阅读