#python #django #django-views #download #zipfile
Вопрос:
Я хотел бы загрузить изображения, загруженные в Django. В настоящее время я сжимаю папку и сначала сохраняю ее в одной из папок Django, а затем загружаю ее. После этого я удаляю заархивированную папку, которая находится в моем приложении Django.
Можно ли заархивировать папку и напрямую загрузить ее, не сохраняя в моей папке Django.
zip_path = os.path.join(settings.MEDIA_ROOT, str(project), str(project) "_images.zip")
def make_archive(source, destination):
base = os.path.basename(destination)
name = base.split('.')[0]
format = base.split('.')[1]
archive_from = os.path.dirname(source)
archive_to = os.path.basename(source.strip(os.sep))
# print(source, destination, archive_from, archive_to)
shutil.make_archive(name, format, archive_from, archive_to)
shutil.move('%s.%s' % (name, format), destination)
make_archive(src_path, zip_path)
file_path = zip_path
if os.path.exists(file_path):
with open(file_path, 'rb') as fh:
response = HttpResponse(fh.read(), content_type="application/force-download")
response['Content-Disposition'] = 'inline; filename=' os.path.basename(file_path)
os.remove(file_path)
if "selected" in request.POST:
shutil.rmtree(src_path)
Комментарии:
1. Я думаю, что zip-папка -это то же самое, что создание zip-папки , и когда вы хотите загрузить эту папку, она должна присутствовать где-то в файловой системе. Вы не можете загрузить то, чего не существует.
2. вы должны попытаться использовать
io.Bytes
для создания файла в памяти. Это распространенный метод отправки сгенерированного изображения (или другого файла) без сохранения на диске.