2008-11-26 21 views
11

我正在尋找上傳文件到s3的方法。我正在使用Django。我目前正在使用亞馬遜的Python庫沿下面的代碼上傳:如何用django(python)和s3上傳文件?

查看:

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) 

模板:

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

然而,當我真正嘗試運行它,我得到以下錯誤:

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

我真的不明白我做錯了什麼。有人能指引我朝着正確的方向嗎?

編輯:爲了防萬一有人想知道,我打算在實際上傳工作後添加一些驗證。

回答

18

您將不得不提供enctype屬性到FORM元素(我以前曾被此咬過)。例如,您的FORM標記應該是這樣的:

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

沒有加密類型,你會發現自己與一個空request.FILES。

+0

Doh!不能相信我錯過了這一點。謝謝! – rksprst 2008-11-26 07:00:23