JSFiddle - React, Tailwind, and code Playground
by nathan
JavaScript
var file,
mediaResource;
file = function (a) {
var filename,
reader,
saveFile,
type;
reader = new FileReader();
reader.onloaded = function (e) {
filename = sha256(e.target.result);
// this doesn't need to be done in the reader's onloaded, except that
// the filename needs to be generated first
saveFile(filename, e.target.result, function (entry) {
url = entry.toURL();
// flush the file data out of scope to save memory
// important as browsers restrict RAM/page
a = undefined;
});
};
saveFile = function (name, data, oncomplete) {
var error,
processFs,
quota = 5368709120, // 5 GB
requestFileSystem;
requestFileSystem = window.requestFileSystem ||
window.webkitRequestFileSystem ||
window.mozRequestFileSystem ||
window.msRequestFileSystem ||
window.oRequestFileSystem ||
function () {
throw "Not supported";
};
error = function () {
throw "File error";
};
processFs = function () {
fs.root.getFile(name, {}, function (entry) {
entry.createWriter(function (writer) {
writer.onwriteend = function () {
if (typeof oncomplete === 'function') {
oncomplete(entry);
}
};
writer.write(data);
});
});
};
requestFileSystem(1, quota, processFs, error);
};
if (a instanceof File) {
reader.readAsBinaryString(a);
type = a.type;
} else if (typeof a === 'string') {
url = a;
}
return {
getUrl : function () {
return url;
},
getType : function () {
return type;
}
...