js filesystem 向本地写文件(笔记)

js filesystem 向本地写文件

申请空间

//兼容老版本chrome
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
var fileSystemObj = {
    fs          : null,//文件系统对象
    size        : 52428800,//申请50M临时空间 50*1024*1024
    errorHandler:function(e){
        //处理各种错误
        // switch (e.name) {
        //     case 'QuotaExceededError':
        //         break;
        //     case 'NotFoundError':
        //         break;
        //     case 'SecurityError':
        //         break;
        //     case 'InvalidStateError':
        //         break;
        //     case 'InvalidModificationError':
        //         break;
        //     default:
        // }
        console.log(e.name);
    },
    initialize  : function() {
        //初始化
        window.requestFileSystem(TEMPORARY, this.size, function (fs) {
            fileSystemObj.fs = fs;
			creatfile();
        },fileSystemObj.errorHandler)
    }
};
if(window.requestFileSystem) {
    navigator.webkitTemporaryStorage.queryUsageAndQuota(function (usage, quota) {
        //usage已经使用的空间,quota申请的总空间
        if (!quota) {
            //还没有申请过空间
            navigator.webkitTemporaryStorage.requestQuota(fileSystemObj.size, function (grantedBytes) {
                fileSystemObj.initialize();
            }, fileSystemObj.errorHandler);
        }else{
            fileSystemObj.initialize();
        }
    });
}

创建文件

function creatfile(){
   fileSystemObj.fs.root.getFile('log6.xlsx', {create: true, exclusive: true}, function(fileEntry) {
        console.log(fileEntry);//留意它的几个属性
              console.log(fileEntry.toURL());

        // 生成FileWriter对象
        fileEntry.createWriter(function(fileWriter) {
            fileWriter.onwriteend = function(e) {
                console.log('写入完成');
            };
            fileWriter.onerror = function(e) {
                console.log('写入失败: ' + e.toString());
            };
            //可以创建ArrayBuffer、Blob等对象写入文件,但不建议使用BlobBuilder弃用方法
            fileWriter.write(new Blob(["something"], {type: "text/plain"}));
        }, fileSystemObj.errorHandler);
    }, fileSystemObj.errorHandler);
}

测试

在这里插入图片描述
在这里插入图片描述
可以将这个地址赋给src 或者herf

注意

需要在iis服务环境
目前只支持chrome浏览器

window.requestFileSystem(type, size, successCallback, opt_errorCallback)
type
文件存储是否应该是持久的。可能的值包括window.TEMPORARY和window.PERSISTENT。
通过TEMPORARY存储的数据可由浏览器自行决定删除(例如在需要更多空间的情况下)。要清除PERSISTENT存储,必须获得用户或应用的明确授权,
并且需要用户向您的应用授予配额。请参阅请求配额。
size
应用需要用于存储的大小(以字节为单位)。
successCallback
文件系统请求成功时调用的回调。其参数为 FileSystem对象。
opt_errorCallback
用于处理错误或获取文件系统的请求遭到拒绝时可选的回调。其参数为FileError对象。

参考

https://github.com/scscms/FileSystem

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值