python – 无法使用具有实际名称的flask下载文件

我正在尝试使用flask下载文件.我的代码如下

@app.route('/Download')
def Down():
    rpm = request.args.get('rpm')
    root = '/home/rpmbuild/RPMS/'
    return send_from_directory(root,rpm)

文件名在url中传递.当我点击网址时,我可以下载文件,但文件名一直在下载.我需要它作为文件的实际名称.我也试过send_file(),但它也下载名称为Download.

解决方法:

send_from_directory的“选项”与sendfile相同:

flask.send_file(filename_or_fp, mimetype=None, as_attachment=False,
                attachment_filename=None, add_etags=True,
                cache_timeout=None, conditional=False,
                last_modified=None)

所以你应该用它来调用它:

@app.route('/Download')
def Down():
    rpm = request.args.get('rpm')
    root = '/home/rpmbuild/RPMS/'
    return send_from_directory(root,rpm,attachment_filename='foo.ext')

你当然用你要给文件的名字替换’foo.ext’.您可能还想将as_attachment参数设置为True.

如果你想要相同的名字,你可以使用os.path.basename(..):

import os

@app.route('/Download')
def Down():
    rpm = request.args.get('rpm')
    root = '/home/rpmbuild/RPMS/'
    return send_from_directory(root,rpm,as_attachment=True,
                               attachment_filename=os.path.basename(rpm))
上一篇:DWS 层-关键词主题表(FlinkSQL)


下一篇:FlinkSql功能测试及实战演练