2008-11-26 13 views
11

Szukam sposobu na przesłanie pliku do s3. Używam django. Obecnie używam Pythona biblioteki Amazona do przesyłania wraz z następującym kodem:Jak przesłać plik z django (python) i s3?

Widok:

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) 

Szablon:

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

Jednak, kiedy rzeczywiście spróbować go uruchomić pojawia się następujący błąd:

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

Naprawdę nie widzę, co robię źle. Czy ktoś może wskazać mi właściwy kierunek?

Edycja: Na wypadek, gdyby ktoś się zastanowił, planuję dodać pewne sprawdzanie poprawności po tym, jak uruchomię faktyczne wysyłanie.

Odpowiedz

18

Będziesz musiał podać atrybut enctype dla elementu FORM (wcześniej zostałem przez niego ugryziony). Na przykład tag forma powinna wyglądać następująco:

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

Bez enctype, znajdziesz się z pustym request.FILES.

+0

Doh! Nie mogę uwierzyć, że to przegapiłem. Dzięki! – rksprst

Powiązane problemy