У меня есть страница, где несколько кнопок обрабатывают различные функции, такие как отправка смс (через API), отправка файла по электронной почте или загрузка файла PDF.Действия кнопок не используют формы, но используют ajax-запросы через javascript.
Я использовал для создания pdf-файла с использованием javascript (jspdf), но написал код, который генерирует pdf-файл python на сервере.Теперь мне нужно разрешить загрузку при нажатии кнопки.
Фрагмент кода сервера:
with NamedTemporaryFile(mode='w+b') as temp:
from django.http import FileResponse
doc = SimpleDocTemplate(temp.name, pagesize=A4, rightMargin=20, leftMargin=20, topMargin=20, bottomMargin=20, allowSplitting=1, title="Prescription", author="MyOPIP.com")
doc.build(elements)
print(f'Generated {temp.name}')
return FileResponse(open(temp.name, 'rb'), content_type='application/pdf')
Предполагается, что приведенный выше код загружает файл PDF, если он вызывается путем перехода по URL-адресу.
Со своей стороны javascript я попытался определить, что я получаю:
$.ajax({
url: `/clinic/${cliniclabel}/prescription/download/patient/${patient_id}`,
dataType: "html",
data: data,
type: 'POST',
success: function (data) {
console.log("Received data from server..type is ", typeof(data))
console.log(data)
}
});
И я получаю:
Received data from server..type is string
%PDF-1.4
%���� ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 5 0 R
>>
endobj
2 0 obj....
Очевидно, django отправляет это как файлпоток.Как я могу получить файл, загруженный пользователю, когда ответ обрабатывается JavaScript?