我正在尝试使用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))