Domanda

Sto cercando un modo per caricare un file su s3. Sto usando Django. Attualmente sto usando la libreria Python di Amazon per caricare insieme al seguente codice:

Visualizza:

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)

Template:

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

Tuttavia, quando provo effettivamente a eseguirlo, viene visualizzato il seguente errore:

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

Non vedo davvero cosa sto facendo di sbagliato. Qualcuno può indicarmi la giusta direzione?

Modifica: nel caso qualcuno si chieda, sto pensando di aggiungere un po 'di validazione dopo che avrò funzionato il caricamento vero e proprio.

È stato utile?

Soluzione

Dovrai fornire l'attributo enctype all'elemento FORM (ne sono stato morso prima). Ad esempio, il tag FORM dovrebbe essere simile a:

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

Senza l'enctype, ti ritroverai con una richiesta vuota.FILES.

Altri suggerimenti

Invece di farlo manualmente, darei un'occhiata al back-end di archiviazione che David Larlet ha scritto per Django, django-depositi

Aggiunta di enctype = " multipart / form-data " sembra qualcosa che vale la pena menzionare in " Caricamenti di file " sezione dei documenti di django ( http://docs.djangoproject.com / it / dev / argomenti / http / file-uploads / ). Pensieri?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top