Наши изображения хранятся вне корня документа, поэтому мы используем скрипт для загрузки его в браузер.
/prx/asset.php?tgt=<photo_filename>
Я могу правильно отобразить изображение в Интернете
$("#photo-editmodal").attr('src', '../prx/asset.php?tgt='+details.photo_saved_file);
Цель состоит в том, чтобы загрузить это изображение.
Я читал некоторые ссылки, и самый близкий момент, которого я достиг, - это выполнить запрос через AJAX, а затем создать ObjectURL с результатом, но (я думаю,) поскольку полученные потоковые данные не являются допустимой ссылкой для создания ObjectURL.
Вот моя попытка:
$.ajax({
url: '../prx/asset.php?tgt='+details.photo_saved_file,
method: 'GET',
xhrFields: {
responseType: ''
},
success: function (data) {
console.log(data);
var a = document.createElement('a');
var url = window.URL.createObjectURL(data);
a.href = url;
a.download = details.photo_saved_file;
document.body.append(a);
a.click();
a.remove();
window.URL.revokeObjectURL(url);
},
// error: function(data) {
// console.log(data);
// }
});
Я получаю сообщение:
Uncaught TypeError: Failed to execute 'createObjectURL' on 'URL': No function was found that matched the signature provided.
Кто-нибудь может помочь сделать это?
РЕДАКТИРОВАТЬ
Я избавляюсь от вызова ajax, и теперь я делаю следующее:
$("#download_photo").attr('href', '../prx/asset.php?tgt='+photo);
$("#download_photo").attr('download', photo);
Проблема, с которой я столкнулся сейчас, заключается в том, что она работает в то время, когда нажимается кнопка. Любая идея?
EDIT 2 Это было намного проще, чем ожидалось, до сих пор не знаю, почему элемент ссылки не может быть создан с помощью ObjectURL, но я могу назначить hrefкогда модал «edit» открыт и для этого ссылка с атрибутом download работает с первого клика.