通过转成Blob文件下载base64图片(兼容IE)

// ------------------------ base64 转 Blob ,并装到数组中 ---------------------------------------------
                    var imgInfo, // 图片信息
                        downloadImgArr=[]; // 装所有图片信息的数组
                    var blob_ = dataURLtoBlob(base64);

                    imgInfo = {
                        name: "图片名称", // 无后缀名
                        src: blob_
                    };
                    downloadImgArr.push(imgInfo);
                    // base64 转 Blob
                     function dataURLtoBlob(dataurl) {
                            var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
                                bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
                            while (n--) {
                                u8arr[n] = bstr.charCodeAt(n);
                            }
                            return new Blob([u8arr], { type: mime });
                    }


// ------------------------ 下载 ---------------------------------------------

                    (function($) {
                            var methods = {
                                _download: function(options) {
                                    var triggerDelay = (options && options.delay) || 100; // 触发延迟
                                    var removeDelay = (options && options.removeDelay) || 1000;
                                    if (options.source === "local") {
                                        this.each(function(index, item) {
                                            methods._createLink(item, index * triggerDelay, removeDelay);
                                        });
                                    }
                                },

                                //download属性设置
                                _createLink: function(url, triggerDelay, removeDelay) {
                                    if (window.navigator.msSaveOrOpenBlob) {   // if browser is IE
                                        navigator.msSaveBlob(url.src, url.name+'.png');//filename文件名包括扩展名,下载路径为浏览器默认路径
                                    } else {
                                        var link = document.createElement("a");
                                        link.setAttribute("href", window.URL.createObjectURL(url.src));
                                        link.setAttribute("download", url.name+'.png');
                                        document.body.appendChild(link);
                                        link.click();
                                    }
                                }
                            };
                            $.fn.multiDownload = function(options) {
                                methods._download.apply(this, arguments);
                            };
                        })(jQuery);
                        $(function() {
                            $(".downloadBtn").click(function() {
                                $(downloadImgArr).multiDownload({"source":"local"});
                        });

应用实例:
jtopo 实现调用saveImageInfo()方法直接下载图片,支持所有浏览器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值