На моем сервере django у меня есть файл, который загружает некоторые файлы из s3 и затем объединяет их в архив.Затем я хочу отправить этот zip-файл клиентской стороне и загрузить его на клиентской стороне.Однако, когда я пытаюсь открыть zip-файл на стороне клиента, я получаю An error occurred while loading the archive
. Я работаю на Ubuntu 14.04 с бэкэндом django и внешним интерфейсом реакции.Я попытался передать файл как файл tar, но это тоже не сработало.Я также пробовал много разных способов передачи zip-файла в HTResponse, но всегда получаю одну и ту же ошибку.Сейчас, чтобы попытаться заставить его работать, я просто пытаюсь загрузить zip-файл, который я скачал на свой локальный компьютер.
Я пробовал несколько разных типов content_type из application / zip, в octet / stream ипринудительная загрузка.
бэкэнд django
zip_path = '/home/konstantin/Downloads/sup.zip'
content_path = mime.guess_type(zip_path)
with open(zip_path, 'rb') as zip_file:
response = HttpResponse(zip_file, content_type='application/zip')
response['Content-Length'] = str(os.stat(zip_path).st_size)
response['Content-Disposition'] = 'attachment; filename={}'.format('willthiswork.zip')
return response
реакция внешнего интерфейса (у нас есть программа, которая изменяет python на js).Ответ на вызов ajax передается непосредственно в этот метод.
def download(self,url):
data = __new__(Blob([url], {"type": "octet/stream"}))
csvURL = window.URL.createObjectURL(data)
tempLink = document.createElement('a')
tempLink.href = csvURL
tempLink.download = 'willthiswork.zip'
tempLink.click()
Ожидаемый результат: Zip-файл загружается на стороне клиента и доступен для открытия. Фактический результат: Zip-файл загружается, но не может быть открыт.