在移动浏览器上强制下载Django Web App中的文件

时间:2018-05-06 03:17:31

标签: python django download response

我有一个带有电影的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类型和其他东西。

2 个答案:

答案 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 我知道这不是下载,但下载总是一种使用链接的方式 也许你能够将这些代码组合起来并使其有效。

请注意,下载链接始终在新窗口中打开,但会自动关闭。

我希望你能取得一些进展