html5 保存文件

34 篇文章 0 订阅

利用浏览器做一个工具时,往往操作的对象就是文件本身,我们需要打开文件,然后对文件进行处理,最后,将处理后的数据,以文件的形式保存起来

那么:我们怎么保存文件呢?

以下提供两个方案 :

1 大家都不陌生,我们在浏览器上经常使用,单击一个链接,启动下载,如下:

function createDownloadLink(dataUrl,fileName){
    var save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a");
    save_link.download = fileName;
    save_link.href = dataUrl;
}

function click = function(node) {
			var event = doc.createEvent("MouseEvents");
			event.initMouseEvent(
				"click", true, false, view, 0, 0, 0, 0, 0
				, false, false, false, false, 0, null
			);
			node.dispatchEvent(event);
		}
var dataUrl = "data:xxxxxxxxxxxxxxxxxxxxxxx";//资源的dataUrl
var saveLink = createDownLoadLink(dataUrl);
click(saveLink);

原理是创建一个下载的链接,将连接的href 用dataUrl赋值。然后触发链接的点击事件,实现下载。

 

2 利用html5 进行保存文件操作

关键步骤:

var req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem ;

req_fs(window.TEMPORARY, 5*1024*1024,createAndSaveFile);

function createAndSaveFile(fs){
fs.root.getFile('log.txt', {create: true}, function(fileEntry) {

    // Create a FileWriter object for our FileEntry (log.txt).
    fileEntry.createWriter(function(fileWriter) {

      fileWriter.onwriteend = function(e) {
        console.log('Write completed.');
      };

      fileWriter.onerror = function(e) {
        console.log('Write failed: ' + e.toString());
      };

      // Create a new Blob and write it to log.txt.
      var bb = new BlobBuilder(); // Note: window.WebKitBlobBuilder in Chrome 12.
      bb.append('Lorem Ipsum');
      fileWriter.write(bb.getBlob('text/plain'));

    }, errorHandler);

  }, errorHandler);

}

参考:

https://github.com/eligrey/FileSaver.js/

http://www.html5rocks.com/zh/tutorials/file/filesystem/   重点

http://stackoverflow.com/questions/13130070/html5-filesystems-api-letting-users-save-files-to-their-actual-filesystem

http://www.html5rocks.com/zh/tutorials/file/filesystem/

http://www.xyhtml5.com/read-and-save-files-using-javascript.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值