2008-11-26 20 views
11

Je suis à la recherche d'un moyen de télécharger un fichier sur s3. J'utilise django. Je suis actuellement en utilisant la bibliothèque de python amazon pour le téléchargement avec le code suivant:Comment télécharger un fichier avec django (python) et s3?

Vue:

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) 

Modèle:

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

Cependant, lorsque je tente en fait de l'exécuter je reçois les éléments suivants erreur:

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

Je ne vois vraiment pas ce que je fais mal. Quelqu'un peut me diriger dans la bonne direction?

Editer: Juste au cas où quelqu'un se poserait des questions, je prévois d'ajouter une validation après le téléchargement.

Répondre

18

Vous devrez fournir l'attribut enctype à l'élément FORM (j'ai déjà été mordu par cela). Par exemple, votre balise FORM devrait ressembler à:

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

Sans enctype, vous vous retrouverez avec un request.FILES vide.

+0

Doh! Je ne peux pas croire que j'ai raté ça. Merci! – rksprst

Questions connexes