0

所以这里的场景是,我有一个端点,它将获取一个 zip 文件,将其解压缩并暂时保存到媒体目录。这是整个代码

def get_filenames(path_for_zip):
    with ZipFile(path_for_zip, 'r') as zip:
        return zip.namelist()


class Upload(View):
    def post(self, request):

        context = {}

        upload_file = request.FILES['document']
        unzip_file = get_filenames(upload_file)
        for files in unzip_file:
            print(files)
            fs = FileSystemStorage()
            fs.save('read.jpg', files)




        return render (request, 'toDo_app.html', context)

FileSystemStorage如您所见,我正在使用。ZipFile正在正确解压缩,我可以看到它,print(files)但问题出在FileSystemStorage我猜,它没有被保存,我收到此错误:

attribute error 'str' object has no attribute 'read'. 

请指出我做错了什么以及应该如何解决。谢谢你。

4

1 回答 1

1

@zeed namelist 返回列表中文件的名称,即 zip 中的字符串。上传时读取/打开文件以缓冲并上传

for files in unzip_file:
    print(files)
    fs = FileSystemStorage()
    with open(files, "rb") as outstream:
        fs.save('read.jpg', outstream)
于 2019-01-25T02:42:32.810 回答