2008-11-26 30 views
11

Estoy buscando una forma de subir un archivo a s3. Estoy usando django. Actualmente estoy usando la biblioteca pitón de Amazon para subir junto con el siguiente código:¿Cómo subir un archivo con django (python) y s3?

Vista:

def submitpicture(request): 
    fuser = request.session["login"] 

    copied_data = request.POST.copy() 
    copied_data.update(request.FILES) 
    content_type = copied_data['file'].get('content-type') 
    ffile = copied_data['file']['content'] 
    key = '%s-%s' % (fuser, ''.join(copied_data['file']['filename'].split(' '))) 
    site_s3.save_s3_data(key, ffile, content_type) 

Plantilla:

<form action="/submitpicture/" method="POST"> 
    <input type="file" id="file" name="file" /> 
    <input type="submit" value="submit" /> 
</form> 

Sin embargo, cuando en realidad intento ejecutarlo me sale el siguiente error:

"Key 'file' not found in <QueryDict: {}>" 
#MultiValueDictKeyError 

Realmente no veo lo que estoy haciendo mal. ¿Alguien me puede apuntar en la dirección correcta?

Editar: En caso de que alguien se pregunte, estoy planeando agregar algo de validación después de que funcione la carga real.

Respuesta

18

Deberá proporcionar el atributo enctype al elemento FORM (esto me ha mordido antes). Por ejemplo, su etiqueta FORM debe verse como:

<form action="/submitpicture/" method="POST" enctype="multipart/form-data" > 

Sin la enctype, se encontrará con un request.FILES vacías.

+0

Doh! No puedo creer que me haya perdido eso. ¡Gracias! – rksprst

Cuestiones relacionadas