申请空间
//兼容老版本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