на такую вью
def download(request, id):
obj = your_model_name.objects.get(id=id)
filename = obj.model_attribute_name.path
response = FileResponse(open(filename, 'rb'))
return response
Как на fetch дообработать .then() этот response чтобы создать событие загрузки этого файла?
Эта конструкция со стековерфлоу пока не работает:
.then(response => {
response.blob()})
.then(blob => {
var file = window.URL.createObjectURL(blob);
window.location.assign(file);
});
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch попробуй такое
попытки response.blob() а затем variable = URL.createObjectURL(blob) заканчиваются Uncaught (in promise) TypeError: Failed to execute 'createObjectURL' on 'URL': Overload resolution failed. У кого-то успешно получалось скачивать файлы django из storage? на JS/без JS? просто адекватно скачать, без нового окна например
Посмотри на js либа filesaver или как то так
ок, спасибо за наводку! А есть ньюансы у обьекта джанги FileResponse в этой процедуре?
на filesaver-е та же ошибка точно чтото не так с этим обьектом джанги response = FileResponse(open(filepath, 'rb')) return response
не, Fileresponse нормально работает, если без fetch
Обсуждают сегодня