72 lines
2.1 KiB
JavaScript
72 lines
2.1 KiB
JavaScript
function js_sync() {
|
|
if (Module.js_fs_synching)
|
|
return;
|
|
Module.js_fs_synching = true;
|
|
FS.syncfs(function (err) {
|
|
console.log("syncFS result:");
|
|
console.log(err);
|
|
Module.js_fs_synching = false;
|
|
});
|
|
}
|
|
function js_pick_file(fn) {
|
|
var input = document.createElement('input');
|
|
input.type = 'file';
|
|
|
|
input.onchange = function(e) {
|
|
// getting a hold of the file reference
|
|
var file = e.target.files[0];
|
|
|
|
// setting up the reader
|
|
var reader = new FileReader();
|
|
reader.readAsArrayBuffer(file);
|
|
//reader.readAsText(file,'UTF-8');
|
|
// here we tell the reader what to do when it's done reading...
|
|
reader.onload = function(readerEvent) {
|
|
console.log("reader.onload " + file.name);
|
|
var content = new Uint8Array(readerEvent.target.result); // this is the content!
|
|
console.log( content );
|
|
FS.writeFile("/" + file.name, content);
|
|
Module.TaskCallback_open_call(fn, "/" + file.name);
|
|
Module.TaskCallback_open_delete(fn);
|
|
}
|
|
}
|
|
|
|
input.click();
|
|
}
|
|
function js_pick_file_save(path, name, fn) {
|
|
jspath = Module.UtilityGetString(path);
|
|
jsname = Module.UtilityGetString(name);
|
|
console.log("js_pick_file_save");
|
|
console.log(jspath);
|
|
file = FS.readFile(jspath);
|
|
blob = new Blob([file]);
|
|
console.log(file);
|
|
|
|
// IE hack;
|
|
// see: http://msdn.microsoft.com/en-us/library/ie/hh779016.aspx
|
|
if (window.navigator.msSaveOrOpenBlob)
|
|
{
|
|
window.navigator.msSaveBlob(blob, jsname);
|
|
}
|
|
else
|
|
{
|
|
var a = window.document.createElement("a");
|
|
a.href = window.URL.createObjectURL(blob, {type: "application/octet-stream"});
|
|
a.download = jsname;
|
|
document.body.appendChild(a);
|
|
// IE: "Access is denied";
|
|
// see: https://connect.microsoft.com/IE/feedback/details/797361/ie-10-treats-blob-url-as-cross-origin-and-denies-access
|
|
a.click();
|
|
document.body.removeChild(a);
|
|
}
|
|
|
|
Module.TaskCallback_save_call(fn, true);
|
|
Module.TaskCallback_save_delete(fn);
|
|
}
|
|
|
|
mergeInto(LibraryManager.library, {
|
|
js_sync: js_sync,
|
|
js_pick_file: js_pick_file,
|
|
js_pick_file_save: js_pick_file_save,
|
|
});
|