2010-04-13 50 views
1

好吧,我放棄 - 5固體小時後,試圖讓Django的形式上傳文件,我檢查了所有鏈接在stackoverflow和谷歌搜索和谷歌搜索。爲什麼這麼難,我只想讓它像管理文件上傳一樣工作?Django文件上傳 - 只是不能工作

所以我得到我需要的代碼,如:

  if submitForm.is_valid(): 
        handle_uploaded_file(request.FILES['attachment']) 
        obj = submitForm.save() 

,我可以看到我在request.FILES文件[「附件」(是的,我有加密類型集),但我到底做的handle_uploaded_file?這些例子都有一個固定的文件名,但顯然我想上傳文件到我在模型中定義的目錄中,但是我看不到我能找到的地方。

def handle_uploaded_file(f): 
    destination = open('fyi.xml', 'wb+') 
    for chunk in f.chunks(): 
    destination.write(chunk) 
    destination.close() 

打賭當有人指出顯而易見的時候,我會覺得很愚蠢!

回答

1

這是我做的方式:

def handle_uploaded_file(f, instance): 
    instance.field.save('name_slug.ext', f, True) 
    instance.save() 
+0

簡單而完美。非常感謝。 – PhoebeB 2010-04-14 07:36:02

+0

爲了清楚起見,這是我的一個名爲'attachment1'的字段的保存行,實例是comm。 comm.attachment1.save(request.FILES ['attachment1'] ._ name,request.FILES ['attachment1'],True) – PhoebeB 2010-04-14 07:56:26

+0

handle_uploaded_file的第二個參數是什麼?這個答案只會讓我更困惑。 – amarillion 2010-07-27 20:55:44

0
def handle_uploaded_file(f, filename): 
    destination = open(filename, 'wb+') 
    for chunk in f.chunks(): 
    destination.write(chunk) 
    destination.close() 

還是我想念什麼?

+0

我在哪裏可以得到「upload_to」,我把模型?或者我需要在函數中定義一個路徑嗎? – PhoebeB 2010-04-13 21:27:10