如何在flask中更改下载名称?
我有一个小项目,必须响应一些文件。我知道使用nginx
会是一个更好的决定,但是文件很小。
我程序的一部分:
return send_file(os.path.join(filepath, filename))
该行返回的文件名类似,download
没有任何格式或类似形式。已下载的文件名始终相同,并不取决于文件的真实名称。文件的真实名称是table.csv
。如何返回带有正确文件名的文件?
回答:
你需要Content-Disposition: attachment; filename=....
为浏览器设置HTTP标头以使用正确的文件名。
你可以send_file()
通过设置as_attachment=True
参数来设置此标头。然后从传入的文件对象中获取文件名。使用attachment_filename
参数显式设置其他文件名:
return send_file(os.path.join(filepath, filename), as_attachment=True)
从flask.send_file文档中:
as_attachment
–设置为True是否要发送带有Content-Disposition: attachment
标题的文件。attachment_filename
–附件的文件名(如果与文件名不同)。你可能想改用该
flask.send_from_directory()
函数。该函数首先确保文件名存在(NotFound
如果不存在,则引发),并确保文件名不包含任何..可能用于“转义”目录的相对元素。将此文件用于所有来自不受信任来源的文件名:
return send_from_directory(filepath, filename, as_attachment=True)
以上是 如何在flask中更改下载名称? 的全部内容, 来源链接: utcz.com/qa/425823.html