2010-08-10 7 views
7

Ich verwende Flask Micro-Framework 0.6 und Python 2.6Flasche/Python. Mimetype von hochgeladenen Datei

Ich muss den Mimetype aus einer hochgeladenen Datei, damit ich es speichern kann. Hier

ist die relevent Python/Flask Code:

@app.route('/upload_file', methods=['GET', 'POST']) 
def upload_file(): 
    if request.method == 'POST': 
     file = request.files['file'] 
     mimetype = #FIXME 
     if file: 
      file.save(os.path.join(UPLOAD_FOLDER, 'File-Name') 
      return redirect(url_for('uploaded_file')) 
     else: 
      return redirect(url_for('upload')) 


Und hier ist der Code für die Webseite:

<form action="upload_file" method=post enctype=multipart/form-data> 
Select file to upload: <input type=file name=file> 
<input type=submit value=Upload> 
</form> 


Der Code funktioniert, aber ich muss in der Lage sein, um den Mimetype beim Hochladen zu erhalten. Ich habe mir die Flask-Dokumentation hier angesehen: http://flask.pocoo.org/docs/api/#incoming-request-data
So weiß ich, dass es den Mimetyp, aber ich kann nicht herausfinden, wie man es abrufen - als eine Textzeichenfolge, z. 'txt/plain'.

Irgendwelche Ideen?

Vielen Dank.

Antwort

17

Von der docs, file.content_type enthält den vollständigen Typ mit Codierung, mimetype enthält nur den Mime-Typ.

@app.route('/upload_file', methods=['GET', 'POST']) 
def upload_file(): 
    if request.method == 'POST': 
     file = request.files.get('file') 
     if file: 
      mimetype = file.content_type 
      filename = werkzeug.secure_filename(file.filename) 
      file.save(os.path.join(UPLOAD_FOLDER, filename) 
      return redirect(url_for('uploaded_file')) 
     else: 
      return redirect(url_for('upload')) 
+0

Vielen Dank! Ich werde mich beim nächsten Mal an die Werkzeug Dokumentation erinnern :) –

+2

@Jonathan: Gern geschehen! Es wurde von der von Ihnen bereitgestellten Doc-Seite verlinkt. – MattH

+1

Nun, das ist ein bisschen peinlich: S lol –

Verwandte Themen