Как скачать изображение вне корня документа с помощью JavaScript - PullRequest
0 голосов
/ 31 октября 2019

Наши изображения хранятся вне корня документа, поэтому мы используем скрипт для загрузки его в браузер.

/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 работает с первого клика.

1 Ответ

0 голосов
/ 31 октября 2019

Это было намного проще, чем ожидалось, все еще не знаю, почему элемент ссылки не может быть создан с помощью ObjectURL, но я могу назначить href, когда модал "edit" открыт, и поэтому ссылка для скачиванияАтрибут работает при первом клике.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...