many-cloud
Version:
A Node module for abstracting file management and interfacing with a variety of cloud storages.
61 lines (52 loc) • 1.29 kB
JavaScript
const fs = require("fs");
const path = require("path");
const mime = require("mime");
module.exports = data => {
return function(folderID, file_path) {
return new Promise((resolve, reject) => {
if (!file_path) {
reject(new Error("Missing file path parameter."));
return;
}
let stats = fs.stat(file_path, (err, stats) => {
if (err) {
reject(err);
return;
}
if (stats.isDirectory()) {
reject(
new Error("Path represents a directory. Please use upload_folder.")
);
return;
}
if (!data.drive) {
data.setup_drive();
}
let file_meta = {
name: path.basename(file_path)
};
let media = {
body: fs.createReadStream(file_path),
mimeType: mime.getType(file_path)
};
if (folderID) {
file_meta.parents = [folderID];
}
data.drive.files.create(
{
resource: file_meta,
media: media
},
(err, res) => {
if (err) {
reject(err);
return;
}
resolve(res.data);
return;
}
);
});
});
};
};