当前位置: 首页 > Web前端 > HTML

JS实现图片、文件、视频时直接下载,不用打开预览

时间:2023-03-28 16:30:40 HTML

//下载方法download.jsfunctiondownload(data,strFileName,strMimeType){varself=window,//这个脚本只适用于浏览器...u='application/octet-stream',//这个默认的mime也会触发iframe下载m=strMimeType||u,x=数据,D=文档,a=D.createElement('a'),z=function(a){returnString(a)},B=self.Blob||self.MozBlob||self.WebKitBlob||z,BB=self.MSBlobBuilder||self.WebKitBlobBuilder||self.BlobBuilder,fn=strFileName||'下载',blob,b,ua,fr//if(typeofB.bind==='function'){B=B.bind(self);}if(String(this)==='true'){//反转参数,允许download.bind(true,"text/xml","export.xml")作为回调x=[x,m]m=x[0]x=x[1]}//继续并立即下载dataURLsif(String(x).match(/^data\:[\w+\-]+\/[\w+\-]+[,;]/)){returnnavigator.msSaveBlob//IE10无法执行[下载],只能执行Blob:?navigator.msSaveBlob(d2b(x),fn):saver(x)//其他人都可以保存未处理的dataURL}//如果dataURL通过则结束?尝试{blob=xinstanceofB?x:newB([x],{type:m})}catch(y){if(BB){b=newBB()b.append([x])blob=b.getBlob(m)//blob}}functiond2b(u){varp=u.split(/[:;,]/),t=p[1],dec=p[2]=='base64'?atob:decodeURIComponent,bin=dec(p.pop()),mx=bin.length,i=0,uia=newUint8Array(mx)for(i;i