Created
September 9, 2013 16:43
-
-
Save tateisu/6498267 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function formatFileError(err){ | |
var sb = err.toString(); | |
for( var k in err ){ | |
sb += "\n "+k+"="+err[k]; | |
if( k == "code" ){ | |
sb+=" "; | |
switch (err[k]) { | |
case FileError.QUOTA_EXCEEDED_ERR: sb += 'QUOTA_EXCEEDED_ERR'; break; | |
case FileError.NOT_FOUND_ERR: sb += 'NOT_FOUND_ERR'; break; | |
case FileError.SECURITY_ERR: sb += 'SECURITY_ERR'; break; | |
case FileError.INVALID_MODIFICATION_ERR: sb += 'INVALID_MODIFICATION_ERR'; break; | |
case FileError.INVALID_STATE_ERR: sb += 'INVALID_STATE_ERR'; break; | |
}; | |
} | |
} | |
return sb; | |
} | |
function promiseRequestFileSystem(bPersistent,quota){ | |
// Tizen 2.2 には window.webkitStorageInfo も window.storageInfo もないようだ | |
// APIの名称がwebkitだとちょっと違う | |
var requestFileSystem = ( window.webkitRequestFileSystem || window.requestFileSystem ); | |
var mode = (bPersistent ? window.PERSISTENT : window.TEMPORARY ); | |
console.log("requestFileSystem="+ dumpObject( requestFileSystem )); | |
// | |
var d = new $.Deferred; | |
requestFileSystem( mode,quota, function(fs){ | |
d.resolve( fs ); // FileSystem object | |
},function(err){ | |
d.reject(err); // FileError object | |
}); | |
return d.promise(); | |
} | |
function promiseGetFile( fs, filename,option ){ | |
var d = new $.Deferred; | |
fs.root.getFile( filename,option, function(entry){ | |
d.resolve(entry); // FileEntry object | |
},function(err){ | |
d.reject(err); // FileError object | |
}); | |
return d.promise(); | |
} | |
function promiseCreateWriter( entry ){ | |
var d = new $.Deferred; | |
entry.createWriter(function(writer) { | |
d.resolve(writer); // FileWriter object | |
},function(err){ | |
d.reject(err); // FileError object | |
}); | |
return d.promise(); | |
} | |
function promiseWrite( writer, data ){ | |
var d = new $.Deferred; | |
writer.onwriteend = function(){ d.resolve(); }; // no object | |
writer.onerror = function(err){ d.reject(err); }; // FileError object | |
writer.write(new Blob([ data ])); | |
return d.promise(); | |
} | |
function testFileSave2(){ | |
// テスト用パラメータ | |
var save_file = "file1"; | |
var save_data = JSON.stringify({ key1: 'v1',key2: 'v2',key3: 'v3'}); | |
var quota = 8 * 1024 * 1024; | |
var bPersistent = true; | |
// | |
promiseRequestFileSystem(bPersistent,quota) | |
... ???? | |
} | |
function testFileSave(){ | |
// テスト用パラメータ | |
var save_file = "file1"; | |
var save_data = JSON.stringify({ key1: 'v1',key2: 'v2',key3: 'v3'}); | |
var quota = 8 * 1024 * 1024; | |
var bPersistent = true; | |
// Tizen 2.2 には window.webkitStorageInfo も window.storageInfo もないようだ | |
// APIの名称がwebkitだとちょっと違う | |
var requestFileSystem = ( window.webkitRequestFileSystem || window.requestFileSystem ); | |
console.log("requestFileSystem="+ dumpObject( requestFileSystem )); | |
var mode = (bPersistent ? window.PERSISTENT : window.TEMPORARY ); | |
// | |
requestFileSystem( mode,quota, function(fs){ // class FileSystem | |
fs.root.getFile( save_file, {create: true }, function(entry){ // class FileEntry | |
entry.createWriter(function(writer) { // class FileWriter | |
writer.onwriteend = function(){ | |
console.log('write completed.'); | |
}; | |
writer.onerror = function(err){ | |
console.log("write error:"+ formatFileError(err) ); | |
}; | |
writer.write(new Blob([ save_data ])); | |
},function(err){ | |
console.log("createWriter failed."+formatFileError(err)); | |
}); | |
},function(err){ | |
console.log("getFile failed."+formatFileError(err)); | |
}); | |
},function(err){ | |
console.log("requestFileSystem failed."+formatFileError(err)); | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment