2016-04-22 74 views
0

在我的django表單嚮導中,我添加了一個文件字段來上傳一個csv文件。在get_context_data中,我試圖處理文件中包含的一些信息。django- TypeError上傳csv文件,無效文件

我可以打印出(self.get_cleaned_data_for_step('0')['file']),它返回一個對象。 TypeError at /research/lists/1/import/ invalid file: <UploadedFile: SalesJan2009.csv (application/vnd.ms-excel)>

有一個MIME類型的問題在這裏:但是當我嘗試使用 file = open(self.get_cleaned_data_for_step('0')['file'], "rb") 它返回此錯誤打開呢?文件上傳後有沒有辦法更改MIME類型?

+0

你可以發佈'self.get_cleaned_data_for_step('0')['file']'的值嗎? – trinchet

+0

我上傳了Book1.csv,打印出的內容是「Book1.csv」 – user2747383

+0

'csv'文件不是二進制的,所以你應該打開文件爲「r」而不是「rb」 – trinchet

回答

0

您無法通過cleaned_data訪問上傳的文件。有關如何使用FormWizard上傳的文件,請參見documentation

To handle FileField within any step form of the wizard, you have to add a file_storage to your WizardView subclass.

This storage will temporarily store the uploaded files for the wizard. The file_storage attribute should be a Storage subclass.

一旦你設置這個了WizardView類有一個get_form_step_files方法可以讓你得到上傳的文件。