当前位置: 首页 > 面试题库 >

如何在flask中更改下载名称?

麻鸿熙
2023-03-14
问题内容

我有一个小项目,必须响应一些文件。我知道使用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)


 类似资料:
  • 问题内容: 如果用户点击可下载链接,例如 在“另存为”对话框之前,是否有客户端(html或javascript)更改文件名称的方法? 问题答案: 不可以,您不能从客户端(HTML或javascript)更改此设置。您需要从服务器进行更改。一种方法是使用服务器端脚本,该脚本将设置Content- Disposition HTTP响应标头:

  • 我开始学gradle了。然而,当我与格拉德尔一起打造Spring;它将依赖项jar下载到 有没有办法指定Gradle将依赖项jar下载到特定位置?就像我可以在Maven中指定存储库位置一样。 系统信息:Windows 7 64位Gradle 1.0版

  • 我很难更改列名。我知道我的语法是正确的,但我收到了一条错误消息。 我使用的语法是: 我一直收到这个错误消息,错误1064(42000):您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解第2行“COLUMN CustomerID to CollaboratorID”附近使用的正确语法 请帮忙。

  • 问题内容: 我是Flask和python的新手。我有一堆视图以jsonify()格式返回字典。对于这些视图,我想添加一个after_request处理函数以更改响应,以便可以向该字典添加键。我有: 我得到的错误是“ TypeError:列表索引必须是整数,而不是str”。请求完成后,如何更改响应字典并添加密钥? 问题答案: 是WSGI对象,这意味着响应的主体必须是可迭代的。对于响应来说,这只是一个

  • 我有一堆CSV文件,它们是作为数据流读取的。对于每个dataframe,我希望更改一些列名,如果某个dataframe中存在特定列: column_name_update_map={'aa':'xx';'bb':'yy'}

  • 将一个eclipse项目导入到Android Studio中,并将其保存到一个新文件夹中。将包名称和所有内容都改为新名称,但项目的名称仍然是旧项目的名称。 如何将指向的名称更改为其他名称?