经过身份验证的用户在帐户页面下有一些数字内容,应该能够下载它。我不想提供直接的 HTML 链接,而只是在单击下载时提供文件。我看过:
这似乎是相关的解决方案并且对其他人有用。然而,我看到的是,它似乎在做正确的事情: - 首先,没有打印错误或崩溃 - 将生成的 HttpResponse 转储到标准输出,显示二进制数据的存在。
但它不会下载任何内容,浏览器也不会询问用户是否认为这是可以安全下载的内容,就像您从网站下载某些 PDF 一样。
我倾向于认为,这可能是一个 settings.py 问题,被设置为可能不允许下载的安全措施。但它可能是其他任何东西。
这是我所拥有的一个例子:
filePath = os.path.abspath('static/media/files/' + fileName)
wrapper = FileWrapper(open(filePath), 'r')
contentType = mimetypes.guess_type(filePath)[0]
response = HttpResponse(wrapper, content_type = contentType)
response['Content-Length'] = os.path.getsize(filePath)
response['Content-Disposition'] = 'attachment; filename=%s/' % smart_str(os.path.basename(filePath))
return response
我尝试过的其他事情:
with open(filePath, 'rb') as f:
return HttpResponse(f.read(), mimetype='image/jpeg')
蟒蛇:2.7.4
点冻结:
Cartridge==0.8.2
Django==1.5.4
Fabric==1.8.0
Mezzanine==1.4.16
PIL==1.1.7
Pillow==2.2.1
Pillow-PIL==0.1dev
South==0.8.2
argparse==1.2.1
bleach==1.2.2
cartridge-stripe==0.1.3
distribute==0.6.34
django-zebra==0.4.3
ecdsa==0.9
filebrowser-safe==0.2.30
grappelli-safe==0.2.22
gunicorn==18.0
html5lib==0.95
oauthlib==0.6.0
paramiko==1.12.0
pisa==3.0.33
psycopg2==2.5.1
pycrypto==2.6
pytz==2013.7
requests==1.2.3
requests-oauthlib==0.3.3
stripe==1.9.6
wsgiref==0.1.2