js 下载文件

2018-04-19  本文已影响46人  一沭丶

网上的文章乱七八糟,还不支持 IE8,

这里整理了一下,支持 IE 浏览器,360浏览器,火狐,谷歌

当然最简单的其实是后端用流文件的方式给出链接,前端点击a标签直接就下载了(以前chrome浏览器下是这么做的,其他浏览器没测过)

    //url为文件链接地址如: http://xx.xx.com/music.mp3
    //docx类型也支持,其他类型没有测过
    function download(url) {
        //是否支持download属性
        //支持download属性的用download
        //不支持的用form表单
        var isDownLoad = 'download' in document.createElement('a');

        if(!isDownLoad) {
            var $form = $('<form method="GET"></form>');
            $form.attr('action', url);
            $form.appendTo($('body'));
            $form.submit();
            $form.remove();
        } else {
            var aLink = document.createElement('a');
            aLink.href = url;
            aLink.download =''; // HTML5新增的属性,可以指定保存文件名,可以不要后缀,注意,file:///模式下不会生效
            var event;
            if(window.MouseEvent) {
                event = new MouseEvent('click');
            } else {
                event = document.createEvent('MouseEvents');
                event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
            }
            aLink.dispatchEvent(event);
        }
    }

上一篇下一篇

猜你喜欢

热点阅读