代码之家  ›  专栏  ›  技术社区  ›  Shobi

获取类型错误:应为str、bytes或os.pathlike对象,而不是inMemoryUploadedfile[duplicate]

  •  0
  • Shobi  · 技术社区  · 7 年前

    这个问题已经有了答案:

    def post(self, request):
        form = CsvUploadForm(request.POST, request.FILES)
    
        if form.is_valid():
            with open(request.FILES['csv']) as csv_source:
                has_header = csv.Sniffer().has_header(csv_source.read(1024))
                csv_source.seek(0)
                reader = csv.DictReader(csv_source)
                ....
                ....
    
        return HttpResponse("file Uploaded")
    

    使用上面的代码,我试图上传一个csv文件并读取它。但我有以下错误。

    打开(request.files['csv'])作为文件: 类型错误:应为str、bytes或os.pathlike对象,而不是inMemoryUploadedFile

    我错过了什么?

    Django 2.0.7版 蟒蛇3.5

    2 回复  |  直到 7 年前
        1
  •  2
  •   JPG    7 年前

    作为 @ Daniel Roseman 也就是说,你可以直接使用文件流作为,

    def post(self, request):
        form = CsvUploadForm(request.POST, request.FILES)
    
        if form.is_valid():
            reader = csv.DictReader(request.FILES['csv'])
            ....
            ....
    
        return HttpResponse("file Uploaded")
        2
  •  0
  •   Todd Jones    7 年前

    尝试将请求读入bytesio流,然后对该对象执行操作。

    def post(self, request):
        form = CsvUploadForm(request.POST, request.FILES)
    
        if form.is_valid():
            csv_source = BytesIO(request.FILES['csv'].read())
            has_header = csv.Sniffer().has_header(csv_source.read(1024))
            csv_source.seek(0)
            reader = csv.DictReader(csv_source)
            ....
            ....
    
        return HttpResponse("file Uploaded")