Ошибка атрибута: у объекта 'str' нет атрибута 'read' python-django - PullRequest
0 голосов
/ 25 января 2019

Итак, сценарий здесь такой: у меня есть конечная точка, которая возьмет zip-файл, разархивирует его и пока сохранит в директории media.Вот весь код для этого

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'. 

Пожалуйста, укажите мне, чтоя сделал неправильно и как это должно быть решено.Спасибо.

1 Ответ

0 голосов
/ 25 января 2019

@ zeed namelist возвращает имена файлов в списке, то есть строку в zip.При загрузке прочитайте / откройте файл в буфер и загрузите

for files in unzip_file:
    print(files)
    fs = FileSystemStorage()
    with open(files, "rb") as outstream:
        fs.save('read.jpg', outstream)
...