2

我正在尝试使用烧瓶下载 PDF 文件,但我不希望该文件作为附件下载。我只是希望它作为单独的网页出现在用户的浏览器中。我尝试将as_attachment=False选项传递给该send_from_directory方法,但没有运气。

到目前为止,这是我的功能:

@app.route('/download_to_browser')
def download_to_browser(filename):
    return send_from_directory(directory=some_directory,
                               filename=filename,
                               as_attachment=False)

该功能在文件正在下载到我的计算机的意义上起作用,但我更愿意在浏览器中显示它(并让用户根据需要下载文件)。

我在这里读到我需要更改content-disposition参数,但我不确定如何有效地完成(也许使用自定义响应?)。有什么帮助吗?

注意:我目前没有使用 Flask-Uploads,但我可能会下线。

4

1 回答 1

5

您可以尝试将mimetype参数添加到send_from_directory

return send_from_directory(directory=some_directory,
                           filename=filename,
                           mimetype='application/pdf')

这对我有用,至少在 Firefox 中是这样。

如果您需要对标头进行更多控制,可以使用自定义响应,但您将失去 send_file() 的优势(我认为直接从网络服务器提供文件会很聪明。)

with open(filepath) as f:
    file_content = f.read()

response = make_response(file_content, 200)
response.headers['Content-type'] = 'application/pdf'
response.headers['Content-disposition'] = ...

return response
于 2017-01-19T10:34:08.893 回答