Я делаю запрос jquery ajax POST и передаю данные в бэкэнд-код Python в структуре Django. Мне нужно вернуть zip-файл как httpresponse, который должен автоматически загружаться в браузере.
object_body = request.body.decode('utf-8')
loaded_json = json.loads(object_body)
json_obj = ast.literal_eval(str(loaded_json))
zip_file_path = importexport.download(json_obj,user)
zip_filename = os.path.basename(zip_file_path)
with open(zip_file_path, 'rb') as zip:
response = HttpResponse(zip.read(), content_type = 'application/x-zip')
response['Content-Disposition'] = 'attachment; filename=' + zip_filename
return response
В настоящее время что у вас есть? Любой ответ? какой выход?
Файл не загружается как вложение. В ответ отображается содержимое zip-файла.
Это передаваемый запрос ajax .... return $ .ajax ({url: "/ testmgr / importexport /", данные: JSON.stringify (данные), метод: 'POST', dataType: 'application / x-zip ', принимает:' application / x-zip ', success: function (response) {},});






Одно решение:
поместите zip-файл в MEDIA_ROOT и перенаправьте на его URL-адрес.
Если у вас есть URL-адрес загрузки (поместите файл в MEDIA_ROOT), вы можете просто записать тег a с атрибутом download, а затем щелкнуть «Загрузить», как указано в следующем фрагменте кода, он автоматически загрузит файл без перенаправления.
<a href = "https://github.com/vaibhavmule/vaibhavmule.github.io/archive/master.zip" download>Download</a>
Отличный вопрос, к чему до сих пор приводит ваш код? Вы получаете сообщение об ошибке или не получаете вложение?