我有一个带有电影的FileField,我试图让用户在移动平台(chrome / safari)上点击下载按钮然后下载它。目前,无论我做什么,它都会在新窗口中打开。
我的观点
def download(request):
file_path = 'movie.mp4'
if os.path.exists(file_path):
with open(file_path, 'rb') as fh:
response = HttpResponse(fh.read(), content_type="video/mp4")
response['Content-Disposition: attachment'] = 'inline; filename=' + os.path.basename(file_path)
return response
raise Http404
文件路径是硬编码的,用于测试目的。
我读到的所有内容都告诉我,这是不可能的,因为Safari和其他移动浏览器可以看到打开比下载更好的体验。我试过改变mime类型和其他东西。
答案 0 :(得分:0)
您的content-disposition
必须包含attachment
以允许用户下载它,它应该是这样的:
response['Content-Disposition'] = 'attachment; filename=' + os.path.basename(file_path) + '.mp4'
答案 1 :(得分:0)
我不太了解python,但我看到你只有一个反应,所以我做了一些研究,这就是我发现的。 Click link open in other window need same 我知道这不是下载,但下载总是一种使用链接的方式 也许你能够将这些代码组合起来并使其有效。
请注意,下载链接始终在新窗口中打开,但会自动关闭。
我希望你能取得一些进展