Чтобы отправить файл в ответ с помощью Django, вам понадобится использовать объект HttpResponse
и функцию FileResponse
. Вот пример кода:
from django.http import HttpResponse, FileResponse def download_file(request): # Открываем файл для чтения file_path = '/путь/к/файлу' file = open(file_path, 'rb') # Создаем HttpResponse объект с типом контента "application/octet-stream", # что позволяет браузеру обрабатывать файлы любого типа response = HttpResponse(content_type='application/octet-stream') # Устанавливаем заголовок Content-Disposition для указания имени файла response['Content-Disposition'] = 'attachment; filename="%s"' % file_path # Копируем содержимое файла в HttpResponse объект response.write(file.read()) # Закрываем файл file.close() return response
В данном примере, мы используем функцию open
для открытия файла в двоичном режиме чтения ('rb'
). Затем мы создаем объект HttpResponse
с типом контента application/octet-stream
, чтобы указать браузеру, что это файл для скачивания. Заголовок Content-Disposition
содержит информацию о имени файла, которое будет отображаться при сохранении файла пользователем.
Затем мы используем метод write
объекта response
, чтобы записать содержимое файла в HTTP ответ. Наконец, мы закрываем файл и возвращаем объект response
.
Это простой способ отправить файл пользователю в ответ на его запрос с использованием Django. Вы также можете настроить и другие параметры ответа, такие как content_type
, status
и др., чтобы адаптировать его к своим потребностям.