如果下载的资源和服务器是同域的,那么只要在a标签中添加download属性即可。
<a href="http://127.0.0.1:8000/a.jpg" download="a.jpg">下载</a>
如果下载的资源和服务器是不同域的,那么添加download属性是没有效果的。
<a href="http://www.baidu.com/xxx.jpg" download="a.jpg">下载</a>
解决办法:
在views.py中定义以下方法:
import urllib2
def file_download(request):
url=request.REQUEST['url']
filename=request.REQUEST['filename']
sourceFile = urllib2.urlopen(url)
response=HttpResponse(sourceFile.read())
response['Content-Type'] = 'application/octet-stream'
response['Content-Disposition'] = 'attachment;filename="{0}"'.format(filename)
return response
然后将a标签的href改一改就行了:
<a href="http://127.0.0.1:8000/file_download?url=http://www.baidu.com/xxx.jpg&filename=a.jpg">下载</a>
跨域文件下载解决方案

本文介绍了如何使用HTML5的download属性实现同域资源的直接下载,并提供了一种通过服务器代理请求的方法来解决跨域文件下载的问题。对于不同域的情况,文章给出了具体的Python Django示例代码。
623

被折叠的 条评论
为什么被折叠?



