2010-08-10 21 views
7

Estoy usando Flask micro-framework 0.6 y Python 2.6Frasco/Python. Obtener mimetype desde el archivo cargado

Necesito obtener el tipo mimet desde un archivo cargado para poder almacenarlo.

Aquí es el relevante código Python/Frasco:

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


Y aquí es el código de la página 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> 


el código funciona, pero deben ser capaces para obtener el tipo mimet cuando se carga. He echado un vistazo a los documentos del Frasco aquí: http://flask.pocoo.org/docs/api/#incoming-request-data
Así que sé que tiene el tipo mimet, pero no puedo encontrar la manera de recuperarlo, como una cadena de texto, p. Ej. 'txt/plain'.

¿Alguna idea?

Gracias.

Respuesta

17

Desde docs, file.content_type contiene el tipo completo con codificación, mimetype contiene solo el tipo de 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

¡Muchas gracias! Recordaré acerca de los documentos de Werkzeug la próxima vez :) –

+2

@Jonathan: ¡De nada! Se vinculó desde la página del documento que proporcionó. – MattH

+1

Bueno, eso es un poco embarazoso: S lol –

Cuestiones relacionadas