Django python. Автоматическое скачивание файлов
Суть в следующем: При изменении определенных полей формы записи на сайте, формируется документ, который автоматически заполняется данными с помощью библиотеки DocxTemplate. Документ появляется в папке проекта (там же, где лежит шаблон для формирования этого документа). Можно ли как-то реализовать загрузку этого сформированного файла средствами браузера? Чтобы загрузка происходила автоматически и файл помещался в стандартную папку Загрузки. Не смог найти никакой информации по этому поводу, везде пишут только про загрузку по ссылке с помощью библиотеки requests.
Написал следующую функцию, она отрабатывает (проверял с помощью print в теле функции), но никакого скачивания не происходит.
def download_file(request):
path = shorter_path + doc_name
with open(path, 'rb') as f:
response = HttpResponse(f.read(), content_type='application/msword')
response['Content-Disposition'] = 'attachment; filename=' + doc_name
return response
Ответы (1 шт):
Попробуйте так:
import mimetypes
from django.http import StreamingHttpResponse
from wsgiref.util import FileWrapper
def download(request):
file = 'path_to_file'
filename = os.path.basename(file)
chunk_size = 8192
response = StreamingHttpResponse(FileWrapper(open(file, 'rb'), chunk_size),
content_type=mimetypes.guess_type(file)[0])
response['Content-Length'] = os.path.getsize(file)
response['Content-Disposition'] = "attachment; filename=%s" % filename
return response