URL.createObjectURL和URL.revokeObjectURL

来源:互联网 发布:淘宝api接口开发教程 编辑:程序博客网 时间:2024/05/20 09:05

URL.createObjectURL和URL.revokeObjectURL
1.URL.createObjectURL()方法会根据传入的参数创建一个指向该参数对象的URL。这个URL的生命仅存在于它被创建的这个文档里,新的对象URL指向执行的File对象或者是Blob对象。
语法:objectURL = URL.createObjectURL(blob || file);
参数:
File对象或者Blob对象
这里大概说下File对象和Blob对象:
File对象,就是一个文件,比如我用input type=”file”标签来上传文件,那么里面的每个文件都是一个File对象.
Blob对象,就是二进制数据,比如通过new Blob()创建的对象就是Blob对象.又比如,在XMLHttpRequest里,如果指定responseType为blob,那么得到的返回值也是一个blob对象.
注意点:
每次调用createObjectURL的时候,一个新的URL对象就被创建了.即使你已经为同一个文件创建过一个URL. 如果你不再需要这个对象,要释放它,需要使用URL.revokeObjectURL()方法. 当页面被关闭,浏览器会自动释放它,但是为了最佳性能和内存使用,当确保不再用得到它的时候,就应该释放它.
2.URL.revokeObjectURL()方法会释放一个通过URL.createObjectURL()创建的对象URL. 当你要已经用过了这个对象URL,然后要让浏览器知道这个URL已经不再需要指向对应的文件的时候,就需要调用这个方法.
具体的意思就是说,一个对象URL,使用这个url是可以访问到指定的文件的,但是我可能只需要访问一次,一旦已经访问到了,这个对象URL就不再需要了,就被释放掉,被释放掉以后,这个对象URL就不再指向指定的文件了.
比如一张图片,我创建了一个对象URL,然后通过这个对象URL,我页面里加载了这张图.既然已经被加载,并且不需要再次加载这张图,那我就把这个对象URL释放,然后这个URL就不再指向这张图了.
语法:window.URL.revokeObjectURL(objectURL);
参数:
objectURL 是一个通过URL.createObjectURL()方法创建的对象URL.
案例:
1.angular导出excel
$scope.exportToExcel=function(){

                var postData = {                    endDate: $scope.endDate,                    insertTimeStart: $scope.insertTimeStart,                    insertTimeEnd: $scope.insertTimeEnd,                    loginId:$scope.loginId,                    groupId:$scope.groupId                };                console.log(JSON.stringify(postData));                $http({                    url: '',                    method: 'POST',                    responseType: 'arraybuffer',                    data: JSON.stringify(postData),                    headers: {                        'Content-type': 'application/json'                    }                }).success(function(data){                       var blob = new Blob([data], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});                        var filename="名单批次报表_" + formatDate(new Date()) + ".xlsx";                        if (window.navigator.msSaveOrOpenBlob) {// For IE blowser                            navigator.msSaveBlob(blob, filename);                        }else{//For other blowser                            var objectUrl = URL.createObjectURL(blob); //创建一个指向改参数的url Blob对象,就是二进制数据                            var a = document.createElement('a');                            document.body.appendChild(a);                            a.setAttribute('style', 'display:none');                            a.setAttribute('href', objectUrl);                            a.setAttribute('download', filename);                            a.click();                            URL.revokeObjectURL(objectUrl);//释放                        }                })    };    //日期格式化YYYY-MM-DD    function formatDate(d) {        var D=['00','01','02','03','04','05','06','07','08','09'];        with (d || new Date) return [            [getFullYear(), D[getMonth()+1]||getMonth()+1, D[getDate()]||getDate()].join('-')            //,[D[getHours()]||getHours(), D[getMinutes()]||getMinutes(), D[getSeconds()]||getSeconds()].join(':')        ].join(' ');    }
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 中材国际停牌原因 股票中材科技 中材国际股票吧 中材国际建设 中材国际有限公司 中材集团有限公司 中材集团股票代码 中材国际是蓝筹股吗 中材招标网首页 中材招标网 中材国际工程股份有限公司 中材科技行情 中材科技总裁 中材科技 增发 中材水泥公司 中材下水管 中材科技股票吧 中材国际公告 中材国际 环保 中材股份股票 中材国际装备 金风科技 中材科技 中材牌水泥 中材科技股份 中材国际股份 中材国际招聘 中材汉江水泥 中材科技刘颖 中材科技 刘颖 中材国际董事长 中材集团董事长 中材科技气瓶 中材集团地址 中材集团 上市公司 中材汉江水泥股份有限公司 中材科技 叶片 中材科技董事长 中材科工集团 中材汉江水泥有限公司 中材国际吧 中材科技股份有限公司股票