2010-08-10 5 views
7

J'utilise Flask micro-framework 0.6 et Python 2.6Flacon/Python. Obtenir le type de fichier à partir du fichier téléchargé

Je dois obtenir le type de fichier à partir d'un fichier téléchargé afin de pouvoir le stocker.

Voici le relevent code Python/Flask:

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


Et voici le code de la page Web:

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


Le code fonctionne, mais je dois être en mesure pour obtenir le type MIME quand il télécharge. J'ai regardé les documents de Flask ici: http://flask.pocoo.org/docs/api/#incoming-request-data
Donc, je sais qu'il obtient le type MIME, mais je ne peux pas trouver comment le récupérer - comme une chaîne de texte, par exemple. 'txt/plain'.

Des idées?

Merci.

Répondre

17

Depuis le docs, file.content_type contient le type complet avec l'encodage, mimetype contient juste le type 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

Merci beaucoup! Je me souviendrai des docs de Werkzeug la prochaine fois :) –

+2

@Jonathan: De rien! Il a été lié à partir de la page de document que vous avez fournie. – MattH

+1

Eh bien c'est un peu embarrassant: S lol –

Questions connexes