Question

Je cherche un moyen de télécharger un fichier sur s3. J'utilise django. J'utilise actuellement la bibliothèque python d'Amazon pour le téléchargement avec le code suivant:

Voir:

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 j'essaie de l'exécuter, j'obtiens le message d'erreur suivant:

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

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

Edit: Juste au cas où quelqu'un se le demanderait, je prévois d’ajouter une validation une fois que le téléchargement effectif fonctionnera.

Était-ce utile?

La solution

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 l’enctype, vous vous retrouverez avec une requête vide.FILES.

Autres conseils

Au lieu de le faire manuellement, je jetterai un coup d'œil au serveur de stockage que David Larlet a écrit pour Django, django-storages

Ajout de enctype = " multipart / form-data " semble être quelque chose qui mérite d'être mentionné dans la section "Fichiers téléchargés". section de la documentation django ( http://docs.djangoproject.com / fr / dev / topics / http / file-uploads / ). Des pensées?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top