无法在 django 中下载文件

Posted

技术标签:

【中文标题】无法在 django 中下载文件【英文标题】:Unable to download file in django 【发布时间】:2018-09-05 05:03:58 【问题描述】:

我是 django 新手,我开发了一个 django 网站,人们可以通过输入书名来下载 epub 文件。我检查了有关下载的 django api,代码似乎工作正常(没有报告错误),但是我的浏览器没有弹出下载窗口。我正在 127.0.0.1:8000 上进行测试,这是我的代码的一部分

view.py

def download(request, file_path, book_name):
    if os.path.exists(file_path):
        response = HttpResponse(content_type="application/epub+zip")
        response['X-Sendfile'] = file_path
        response['Content-Disposition'] = 'attachment; filename=abc.epub'
        print (response)
        return response
    raise False

根据我的控制台,它可以找到文件路径,并通过打印它显示的消息

<HttpResponse status_code=200, "application/epub+zip">
[26/Mar/2018 18:31:03] "POST / HTTP/1.1" 200 509

似乎一切正常,只是没有弹出下载窗口。有谁知道哪里出了问题?谢谢!

=========== 补充: 为了让您全面了解视图文件,下载是按索引调用的,仅此而已:

def index(request):
    template = loader.get_template('index.html')
    book_name = ''
    result = ''
    if request.method == "POST": # check if user actually type a book name
        book_name = request.POST.get("book_name")
    cwd = os.getcwd()
    if book_name != '': # search and create are functions from other file which would create an epub file and put it in current directory
        result = search.search_ask(book_name)
        create.create(book_name)

        file_path = os.path.join(cwd, book_name) + '.epub'
        download(request, file_path, book_name)

    context = 'return_value': book_name,
               'result_1': result,
               'cwd': cwd

    return HttpResponse(template.render(context, request))

【问题讨论】:

【参考方案1】:

您不会返回下载方法返回的响应对象。大多数是:

return donwload(request, file_path, book_name)

download_response = donwload(request, file_path, book_name)
if download_response:
    return download_response
else:
    # not found or other return.

在你的代码中总是返回

return HttpResponse(template.render(context, request))

【讨论】:

这正是我犯的愚蠢错误,感谢您的帮助!

以上是关于无法在 django 中下载文件的主要内容,如果未能解决你的问题,请参考以下文章

无法在 R 中下载文件 - 状态 503

无法使用CURL在浏览器中下载文件

最近的系统更新后,无法再在IE 11中下载文件

如何在 wkwebview 中下载文件

如何使用 selenium 在点击事件中下载文件?

在iOS中下载文件[重复]