Загрузка zip-файла с Django из запроса API

#python #django #zip

#python #джанго #zip

Вопрос:

В настоящее время я выполняю вызов API, который отправляет обратно zip-файл. При использовании request :

 res = requests.get('http://url/to/api, headers={auth: 'token', Accept: 'application/octet-stream'} 
 

Я могу получить содержимое двоичного ответа, используя res.content :

Пример:

 b'PKx05x06...
 

Затем я возвращаю двоичный ответ из моего представления в мой шаблон:

 return render(request, 'example.html', {'zipfile': res.content}
 

В моем example.html случае я попытался создать кнопку для загрузки zip-файла с помощью:

 <a href="data:application/zip, {{ zipfile }}" download>Download</a>
 

Однако я получил обратно поврежденный zip-файл.

Я совсем новичок в Django, любая помощь здесь приветствуется, спасибо!

Комментарии:

1. почему вы отправляете его в шаблон? zip-файл — это bytes данные, но при отправке в string шаблон вы создаете нечитаемый элемент, потому что он должен быть преобразован bytes string . Если вы хотите поместить его <a> , тогда лучше преобразовать в base64 строку. аналогично изображению в Flask: как использовать BytesIO в Flask для отображения изображения matplotlib без сохранения в файле.

2. Mozilla doc: URL-адреса данных — ie. data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==