当前位置: 首页 > 知识库问答 >
问题:

Flask send_file()返回正确的。xlsx数据,但文件名不正确

马新觉
2023-03-14
@app.route('/download', methods=['GET'])
def download():

    run_id = request.args.get('run_id')
    fp = BucketHelper().get_report_fp(run_id)
    send_file(fp,
             as_attachment=True,
             mimetype='application/vnd.ms-excel',
             attachment_filename="test.xlsx")
import cloudstorage
from google.appengine.api import app_identity

class BucketHelper:
    def __init__(self):
        self.bucket_path = '/my-bucket/path'

    def get_report_fp(self, run_id):
        filename = "{}/my_report_{}.xlsx".format(self.bucket_path, run_id)
        return cloudstorage.open(filename, mode='rb')

该文件不被命名为“test.xlsx”,而是被命名为“download”,并且不被识别为Excel文件。

任何帮助都很感激。

共有1个答案

郭思聪
2023-03-14

该文件被称为download,因为这是您设置的路径。

@app.route('/download', methods=['GET'])
def download():

如果您没有能力控制用户的请求,您应该能够通过使用重定向来定义一个假文件名,否则只需使用定义的新路由进行下载。

试试这样的东西?

...
from flask import redirect
...

@app.route('/download', methods=['GET'])
def download_redirect():
    redirect('/download/test.xlsx')

@app.route('/download/<filename>', methods=['GET'])
def download(filename):

    run_id = request.args.get('run_id')
    fp = BucketHelper().get_report_fp(run_id)
    send_file(fp,
             as_attachment=True,
             mimetype='application/vnd.ms-excel',
             attachment_filename="test.xlsx")
 类似资料:
  • 问题是当我使用将文件名设置为 在显示对话框之前,并且在显示对话框时,我将文件保存为并且再次使用,我将获得-在这里它应该返回我选择保存到的文件的名称。 有人能告诉我我在这里做错了什么吗?此外,如果您有更好的跨平台解决方案显示保存文件对话框,请与我分享。

  • 问题内容: def size_of_dir(dirname): print(“Size of directory: “) print(os.path.getsize(dirname)) 是有问题的代码。dirname是一个目录,其中包含 130个 文件,每个文件约 1kb 。当我调用此函数时,它返回 4624 ,这 不是 目录的大小…为什么? 问题答案: 此值(4624B)代表的大小 文件 是 描

  • 本文向大家介绍如果文件名是UTF-8,则使PHP pathinfo()返回正确的文件名,包括了如果文件名是UTF-8,则使PHP pathinfo()返回正确的文件名的使用技巧和注意事项,需要的朋友参考一下 除Latin-1外,大多数核心PHP函数均不处理字符集。但是在'pathinfo'之前,放置'setlocale'可以用于返回正确的文件名,即使它是UTF-8编码的。 默认情况下,它以'C'语

  • 我正在使用postgis计算两个地理坐标之间的距离。 它返回给我53536.743496517米,大约等于54公里,但实际距离是103公里,我通过http://boulter.com/gps/distance/ 我在询问中是否做错了什么?

  • 我正在尝试在代码中使用NSPredicate搜索名称。搜索工作正常,但不会返回适当的结果。当我搜索一个名称(例如“Colin”)时,它会返回表中的所有其他名称或另一个名称(例如“Mike”),但如果我输入一个不存在的随机字符串,它会返回:“找不到结果”。当我在搜索栏中键入一个名字(例如Lisa)时,我希望它能找到这个名字(Lisa)并返回它,但它没有这样做 这是我的代码: 自己name返回表中的所