【问题标题】:django- TypeError uploading csv file, invalid filedjango-TypeError上传csv文件,无效文件
【发布时间】:2016-04-22 14:36:20
【问题描述】:

在我的 django 表单向导中,我添加了一个文件字段来上传 csv 文件。在 get_context_data 我试图处理文件中包含的一些信息。

我可以打印出(self.get_cleaned_data_for_step('0')['file']),它会返回一个对象。但是当我尝试使用打开它时 file = open(self.get_cleaned_data_for_step('0')['file'], "rb") 它返回此错误: TypeError at /research/lists/1/import/ invalid file: <UploadedFile: SalesJan2009.csv (application/vnd.ms-excel)>

这里有 Mime 类型问题吗?上传文件后有没有办法更改 Mime 类型?

【问题讨论】:

  • 你能发布self.get_cleaned_data_for_step('0')['file']的值吗?
  • 我上传了Book1.csv,打印出来的是“Book1.csv”
  • csv 文件不是二进制文件,因此您应该以“r”而不是“rb”打开文件
  • 我将代码更改为 file = open(self.get_cleaned_data_for_step('0')['file'], 'r') 并且仍然收到相同的错误,无效文件:

标签: python django csv


【解决方案1】:

您无法通过cleaned_data 访问上传的文件。请参阅documentation,了解如何将上传的文件与FormWizard 一起使用。

要在向导的任何步骤形式中处理FileField,您必须将file_storage 添加到您的WizardView 子类中。

此存储将临时存储向导上传的文件。 file_storage 属性应该是 Storage 子类。

设置完成后,WizardView 类有一个 get_form_step_files 方法,可以让您获取上传的文件。

【讨论】:

    猜你喜欢
    • 2017-01-11
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 2021-02-02
    相关资源
    最近更新 更多