首页 > 解决方案 > 如何使用 javascript 在文档根目录之外下载图像

问题描述

我们的图像存储在文档根目录之外,因此我们使用脚本将其导入浏览器。

/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);    

我现在遇到的问题是它在第二次单击按钮时起作用。任何想法?

编辑 2 它比预期的要简单得多,仍然不知道为什么无法在 ObjectURL 的帮助下创建链接元素,但我可以在“编辑”模式打开时分配 href,因此链接具有下载属性在第一次点击时工作。

标签: javascriptjquerydownload

解决方案


它比预期的要简单得多,仍然不知道为什么无法在 ObjectURL 的帮助下创建链接元素,但是我可以在“编辑”模式打开时分配 href,因此具有下载属性的链接可以正常工作第一次点击。


推荐阅读