swarm-js
Version:
Swarm tools for JavaScript.
65 lines (58 loc) • 1.95 kB
JavaScript
var picker = function picker(type) {
return function () {
return new Promise(function (resolve, reject) {
var fileLoader = function fileLoader(e) {
var directory = {};
var totalFiles = e.target.files.length;
var loadedFiles = 0;
[].map.call(e.target.files, function (file) {
var reader = new FileReader();
reader.onload = function (e) {
var data = new Uint8Array(e.target.result);
if (type === "directory") {
var path = file.webkitRelativePath;
directory[path.slice(path.indexOf("/") + 1)] = {
type: "text/plain",
data: data
};
if (++loadedFiles === totalFiles) resolve(directory);
} else if (type === "file") {
var _path = file.webkitRelativePath;
resolve({
"type": mimetype.lookup(_path),
"data": data
});
} else {
resolve(data);
}
};
reader.readAsArrayBuffer(file);
});
};
var fileInput;
if (type === "directory") {
fileInput = document.createElement("input");
fileInput.addEventListener("change", fileLoader);
fileInput.type = "file";
fileInput.webkitdirectory = true;
fileInput.mozdirectory = true;
fileInput.msdirectory = true;
fileInput.odirectory = true;
fileInput.directory = true;
} else {
fileInput = document.createElement("input");
fileInput.addEventListener("change", fileLoader);
fileInput.type = "file";
}
;
var mouseEvent = document.createEvent("MouseEvents");
mouseEvent.initEvent("click", true, false);
fileInput.dispatchEvent(mouseEvent);
});
};
};
module.exports = {
data: picker("data"),
file: picker("file"),
directory: picker("directory")
};