如何使用javascript下载文件(图像)?

时间:2019-04-11 19:10:20

标签: javascript file google-chrome url download

我正在通过获取<img>属性从src元素中提取图像的URL。

我通过执行以下操作打开图像链接:

window.open(image.src);

但是我应该手动下载图像,这不是很好。

所以我正在使用此脚本(不是我的脚本)下载图像:

setTimeout(function() {

   url = '//assets.codepen.io/images/codepen-logo.svg';
   downloadFile(enlargedImage.src); // UNCOMMENT THIS LINE TO MAKE IT WORK

}, 2000);

// Source: http://pixelscommander.com/en/javascript/javascript-file-download-ignore-content-type/
window.downloadFile = function (sUrl) {

    //iOS devices do not support downloading. We have to inform user about this.
    if (/(iP)/g.test(navigator.userAgent)) {
       //alert('Your device does not support files downloading. Please try again in desktop browser.');
       window.open(sUrl, '_blank');
       return false;
    }

    //If in Chrome or Safari - download via virtual link click
    if (window.downloadFile.isChrome || window.downloadFile.isSafari) {
        //Creating new link node.
        var link = document.createElement('a');
        link.href = sUrl;
        link.setAttribute('target','_blank');

        if (link.download !== undefined) {
            //Set HTML5 download attribute. This will prevent file from opening if supported.
            var fileName = sUrl.substring(sUrl.lastIndexOf('/') + 1, sUrl.length);
            link.download = fileName;
        }

        //Dispatching click event.
        if (document.createEvent) {
            var e = document.createEvent('MouseEvents');
            e.initEvent('click', true, true);
            link.dispatchEvent(e);
            return true;
        }
    }

    // Force file download (whether supported by server).
    if (sUrl.indexOf('?') === -1) {
        sUrl += '?download';
    }

    window.open(sUrl, '_blank');
    return true;
}

window.downloadFile.isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
window.downloadFile.isSafari = navigator.userAgent.toLowerCase().indexOf('safari') > -1;

但不下载图像,而是打开带有图像的新标签。

我正在使用Google Chrome浏览器并在控制台中执行脚本。

0 个答案:

没有答案