如何从Django网站下载文件?



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

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

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

来自Mozilla Developer Network锚元素参考:

"…下载只适用于同源url,或blob:和data:方案…">

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

如果这是你遇到的,我想到的一个工作是,你可以在你的网站上做一个传输url,接收文档标识符,从aws s3下载,然后转发其内容作为响应。这样,你还可以控制内容类型,如你可能需要显式设置的标题,使浏览器按照你想要的方式运行。

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

最新更新