2016-12-14 121 views
1

我在一個文件夾下有很多文件(例如'datasets'),這些文件在許多不同的子詞典中分開。如何使用Django將文件從不同的子文件夾上傳到不同的子文件夾中

我想讓用戶在表單中指定文件夾的'datasets'並上傳Django中的所有文件。上傳後,Django視圖函數將從每個文件中提取一些片段信息並保存到數據庫中。我怎樣才能做到這一點。

以下是我的文件結構被上傳:

datasets 
- subfolder 1 
    - file1 
    - file2 
    - subfolder 1a 
     - file3 
- subfolder 2 
    - file4 
- file5 

回答

0

FileField.upload_to定義如下

此屬性提供了設置的上傳目錄和文件 名稱的方式,並可以通過兩種方式設置。在這兩種情況下,該值都會通過 傳遞給Storage.save()方法。 ... upload_to也可以是一個可調用的,例如一個函數,如 。這將被調用以獲取包括文件名的上傳路徑 。該可調用函數必須接受兩個參數,並且 返回一個Unix樣式的路徑(帶有正斜槓)以傳遞到存儲系統的 。這兩個參數是:

所以,你需要做的是創建將檢查文件名的函數或它的內容,並決定該文件應保存

def get_upload_path(instance, filename): 
    if filename .... : 
     return 'path1' 
    else : 
     return 'path2' 

而且你的模式將改變到

image = models.FileField(upload_to=get_upload_path) 
+0

很好的編輯。你回答解決了將文件保存到不同子文件夾的問題。但是如果我想上傳來自不同子文件夾的文件呢?我閱讀文檔。默認上傳只允許您從一個文件夾上傳多個文件。如果該文件夾下的子文件夾中有文件,子文件夾中的文件將被忽略。我編輯我的問題標題來澄清我的問題。 – user7299363

+0

這不是一個django問題。這是瀏覽器行爲。您將不得不在客戶端使用遞歸文件上傳器。我不確定目前是否有任何存在的東西是用java製作的。 – e4c5

+0

所以這是怎麼回事? – e4c5

相關問題