Я пытаюсь создать веб-страницу с таблицей, в которой один из столбцов этой таблицы загружает определенный файл, который находится на моем компьютере. Файл, который должен быть загружен, основан на идентификационном номере этой строки. (ID - это столбец в моей таблице)
Пример. Если пользователь нажимает на URL, который находится в 3-й строке, то файл с именем «3.zip» в моих локальных файлах должен быть загружен.
Я пробовал <a href="<path>" download>
в моем файле шаблона HTML, но я понял, что в Django метод отличается. Затем я использовал HTTPResponse в качестве метода вложения.
Это мой код Views.py для загрузки.
def download_file(request):
fl_path = '/home/harish/Desktop/cvision/users_output_files/5/5.zip'
filename = '5.zip'
with open(fl_path, 'r') as zip_file:
response = HttpResponse(zip_file, content_type='application/force-download')
response['Content-Disposition'] = 'attachment; filename="%s"'%filename
return response
Urls.py
urlpatterns = [
path('',views.homepage),
path('add',views.datapage),
path('newdata',views.newdata),
path('newuser',views.newuser),
path('download_file/',views.download_file)
]
Итак, когда я go к пути http://127.0.0.1:8000/download_file
файл должен быть загружен. Но вместо этого я получаю ошибку.
'utf-8' codec can't decode byte 0xeb in position 10: invalid continuation byte
Если мы игнорируем ошибку кодирования, как я могу решить проблему загрузки определенного файла из локальных папок на основе идентификатора этой строки?