Skip to content

Instantly share code, notes, and snippets.

@tateisu
Created September 9, 2013 16:43
Show Gist options
  • Save tateisu/6498267 to your computer and use it in GitHub Desktop.
Save tateisu/6498267 to your computer and use it in GitHub Desktop.
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