2010-08-10 29 views
7

Używam oprogramowania Flask micro-framework 0.6 i Python 2.6Flask/Python. Pobierz typ MIME z przesłanego pliku

Potrzebuję uzyskać typ MIME z przesłanego pliku, aby można było go zapisać.

Oto wymienionych w odpowiednich kod Python/Kolby:

@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')) 


I tu jest kod na stronie internetowej:

<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> 


Kod działa, ale muszę być w stanie aby uzyskać typ MIME po przesłaniu. Spojrzałem na dokumenty Flask tutaj: http://flask.pocoo.org/docs/api/#incoming-request-data
Więc wiem, że dostaje typ MIME, ale nie mogę się dowiedzieć, jak go odzyskać - jako ciąg tekstowy, np. "txt/plain".

Wszelkie pomysły?

Dziękuję.

Odpowiedz

17

Od docs, file.content_type zawiera pełny typ z kodowaniem, mimetype zawiera tylko typ MIME.

@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

Dziękuję bardzo! Będę pamiętać o dokumentach Werkzeug następnym razem :) –

+2

@ Jonathan: Nie ma za co! Zostało połączone z podaną stroną dokumentu. – MattH

+1

Cóż, to jest trochę krępujące: S lol –