2017-03-28 7 views
4

Ich versuche, die Datei mit Kolben zu downloaden. Mein Code ist wie folgtKann Datei mit Flashen mit aktuellem Namen nicht herunterladen

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

Der Name der Datei wird in der URL übergeben. Wenn ich die URL drücke, kann ich die Datei herunterladen, aber den Namen der Datei in immer Download. Ich brauche es, um der tatsächliche Name der Datei zu sein. Ich habe auch versucht send_file(), aber es wird auch mit dem Namen Download herunterladen.

Antwort

3

„Optionen“ von send_from_directory sind die gleichen wie 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)

So sollten Sie es mit nennen:

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

Wo Sie natürlich 'foo.ext' durch den Namen, den Sie geben wollen ersetzen die Datei. Wahrscheinlich möchten Sie auch den Parameter as_attachment auf True einstellen.

Falls Sie die gleichen Namen, Sie os.path.basename(..) dafür verwenden können:

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))
Verwandte Themen