我有一个小项目,必须响应一些文件。我知道使用nginx会是一个更好的决定,但是文件很小。
nginx
我程序的一部分:
return send_file(os.path.join(filepath, filename))
该行返回的文件名类似,download没有任何格式或类似形式。已下载的文件名始终相同,并不取决于文件的真实名称。文件的真实名称是table.csv。如何返回带有正确文件名的文件?
download
table.csv
你需要Content-Disposition: attachment; filename=....为浏览器设置HTTP标头以使用正确的文件名。
Content-Disposition: attachment; filename=....
你可以send_file()通过设置as_attachment=True参数来设置此标头。然后从传入的文件对象中获取文件名。使用attachment_filename参数显式设置其他文件名:
send_file()
as_attachment=True
attachment_filename
return send_file(os.path.join(filepath, filename), as_attachment=True)
从flask.send_file文档中:
as_attachment
Content-Disposition: attachment
flask.send_from_directory()
NotFound
return send_from_directory(filepath, filename, as_attachment=True)