Django загружает файл
у меня есть бд, я сделал ее с помощью Django, и с помощью models.CharField я создал путь, по которому пользователи будут загружать файл в свой пост. в MEDIA_URL = "/media/"
но я пытался дать пользователю возможность скачать содержимое (файл) по ссылке или просто щелчком мыши. как я могу это сделать!
У меня есть несколько имен файлов в моем models.py вот так:
files_Tensile = models.FileField(blank=True, null=True, upload_to="chapters/%Y/%m/%D")
files_Charpy = models.FileField(blank=True, null=True, upload_to="chapters/%Y/%m/%D")
files_Modulus = models.FileField(blank=True, null=True, upload_to="chapters/%Y/%m/%D")
Diagramm_Hohen_Temp = models.ImageField(blank=True, null=True, upload_to="chapters/%Y/%m/%D")
files_Metallo = models.FileField(blank=True, null=True, upload_to="chapters/%Y/%m/%D")
Gefüge = models.ImageField(blank=True, null=True, upload_to="chapters/%Y/%m/%D")
Diagramm_Wärmebehandlung=models.ImageField(blank=True,null=True,upload_to="chapters/%Y/%m/%D")
files_Density = models.FileField(blank=True, null=True, upload_to="chapters/%Y/%m/%D"
the views.py:
def download(request, path):
file_path = os.path.join(settings.MEDIA_ROOT, path)
if os.path.exists(file_path):
with open(file_path, 'rb') as fh:
response = HttpResponse(fh.read(), content_type="application/vnd.ms-excel")
response['Content-Disposition'] = 'inline; filename=' + os.path.basename(file_path)
return
response
raise Http404
в html:
<td><a href="media/files_Density/download"> Download Files</a></td>
Я получаю ошибку, Страница не найдена (404). может ли кто-нибудь объяснить, как это исправить?
для того, чтобы пользователь мог просматривать созданные им файлы после загрузкиMEDIA_URL = "/media/"
Самый простой способ скачать файл по клику (который находится на том же сервере, что и веб-страница) - добавить в тег html a атрибут download
в html
<td><a href="fileURLGoesHere" download> Download Files</a></td>
Я думаю, вам следует заменить CharField
на FileField
, поскольку он будет обрабатывать многое из этого от вашего имени :), включая сохранение в каталог media/
, или вы можете указать другое место, просто нужно прочитать документацию