微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以使用来自 post 请求的 python (Django) 中的 zipFile 将任何文件写入 zip 文件获取错误

如何解决是否可以使用来自 post 请求的 python (Django) 中的 zipFile 将任何文件写入 zip 文件获取错误

场景:

我正在尝试压缩来自发布请求的所有传入文件,并将其存储在一个目录中。

我的方法

import zipfile

class UploadView(viewsets.ViewSet):

    parser_classes = (parsers.FormParser,parsers.MultiPartParser)

    def create(self,request):
        serializer = UploadSerializer(data=request.data)
        unique_number= request.data.get('unique_number')

        if 'document_details' not in request.FILES or not serializer.is_valid():
            return Response(status=status.HTTP_400_BAD_REQUEST)
        else:
            v_files = request.FILES.getlist('document_details')
            handle_uploaded_file(v_files,f'{unique_number}.zip','uploads')
            return Response(status=status.HTTP_201_CREATED)


def handle_uploaded_file(f,filename,folderName):
    print(f) #print ===> [<InMemoryUploadedFile: sample.xlsx (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)>,......]
    with zipfile.ZipFile(filename,'w',compression=zipfile.ZIP_DEFLATED) as zipF:
        for _file in f:
            print(_file) # prints ==> sample.xlsx
            print(_file.read()) # prints ==> b'px\x03\x04\x14\x00\x06\x....\x03\x04\x14\x00\x06\x' 
            zipF.write(_file)

它向我抛出以下错误

TypeError: stat: path should be string,bytes,os.pathLike or integer,not InMemoryUploadedFile

我也尝试过

zipF.write(_file.read())

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。