1 | ( function (a,b){ if ( "function" == typeof define&&define.amd)define([],b); else if ( "undefined" != typeof exports)b(); else {b(),a.FileSaver={exports:{}}.exports}})( this , function (){ "use strict" ; function b(a,b){ return "undefined" == typeof b?b={autoBom:!1}: "object" != typeof b&&(console.warn( "Deprecated: Expected third argument to be a object" ),b={autoBom:!b}),b.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)? new Blob([ "\uFEFF" ,a],{type:a.type}):a} function c(b,c,d){ var e= new XMLHttpRequest;e.open( "GET" ,b),e.responseType= "blob" ,e.onload= function (){a(e.response,c,d)},e.onerror= function (){console.error( "could not download file" )},e.send()} function d(a){ var b= new XMLHttpRequest;b.open( "HEAD" ,a,!1); try {b.send()} catch (a){} return 200<=b.status&&299>=b.status} function e(a){ try {a.dispatchEvent( new MouseEvent( "click" ))} catch (c){ var b=document.createEvent( "MouseEvents" );b.initMouseEvent( "click" ,!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0, null ),a.dispatchEvent(b)}} var f= "object" == typeof window&&window.window===window?window: "object" == typeof self&&self.self===self?self: "object" == typeof global&&global.global===global?global:void 0,a=f.saveAs||( "object" != typeof window||window!==f? function (){}: "download" in HTMLAnchorElement.prototype? function (b,g,h){ var i=f.URL||f.webkitURL,j=document.createElement( "a" );g=g||b.name|| "download" ,j.download=g,j.rel= "noopener" , "string" == typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target= "_blank" )):(j.href=i.createObjectURL(b),setTimeout( function (){i.revokeObjectURL(j.href)},4E4),setTimeout( function (){e(j)},0))}: "msSaveOrOpenBlob" in navigator? function (f,g,h){ if (g=g||f.name|| "download" , "string" != typeof f)navigator.msSaveOrOpenBlob(b(f,h),g); else if (d(f))c(f,g,h); else { var i=document.createElement( "a" );i.href=f,i.target= "_blank" ,setTimeout( function (){e(i)})}}: function (a,b,d,e){ if (e=e||open( "" , "_blank" ),e&&(e.document.title=e.document.body.innerText= "downloading..." ), "string" == typeof a) return c(a,b,d); var g= "application/octet-stream" ===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\/[\d]+/.test(navigator.userAgent); if ((i||g&&h)&& "undefined" != typeof FileReader){ var j= new FileReader;j.onloadend= function (){ var a=j.result;a=i?a:a.replace(/^data:[^;]*;/, "data:attachment/file;" ),e?e.location.href=a:location=a,e= null },j.readAsDataURL(a)} else { var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e= null ,setTimeout( function (){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a, "undefined" != typeof module&&(module.exports=a)}); |
然后:在项目中引入以上js文件
最后:在需要生成的页面中加入以下代码
1 2 | var blob = new Blob([ "你好\t\n我生成.txt文件,搞定了" ], {type: "text/plain;charset=utf-8" }); saveAs(blob, "hello.txt" ); |
非常好用,还可以生成任意文件类型
我这里的需求是前端生成的模板 需要保存在电脑上,用了这个就不需要通过服务器流转去保存文件了
本文为程序员之家原创文章,转载无需和我联系,但请注明来自程序员之家www.baldhome.com