2021-04-28 19:58:25 +00:00
|
|
|
const URL = require('url'), fs = require('fs');
|
|
|
|
const do_wb = require('../../src/util');
|
|
|
|
const formidable = require('formidable-serverless');
|
|
|
|
const tmp = require('tmp');
|
2021-04-30 00:23:13 +00:00
|
|
|
const AWS = require('aws-sdk');
|
2021-04-28 19:58:25 +00:00
|
|
|
|
|
|
|
module.exports = function (req, res) {
|
|
|
|
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
|
|
const url = URL.parse(req.url, true);
|
2021-04-30 00:23:13 +00:00
|
|
|
const s3 = new AWS.S3({ endpoint: 'http://localhost:4566', s3ForcePathStyle: true });
|
2021-04-28 19:58:25 +00:00
|
|
|
|
|
|
|
/* parse form data */
|
|
|
|
const form = formidable({ multiples: true, maxFileSize: 2 * 1024 * 1024 });
|
|
|
|
|
2021-04-28 21:48:35 +00:00
|
|
|
/*create temp file*/
|
2021-04-28 19:58:25 +00:00
|
|
|
const newFile = () => {
|
2021-04-28 21:48:35 +00:00
|
|
|
const tmpobj = tmp.fileSync({postfix: '.xlsx'});
|
2021-04-28 19:58:25 +00:00
|
|
|
return tmpobj.name;
|
|
|
|
}
|
2021-04-28 21:48:35 +00:00
|
|
|
|
2021-04-30 00:23:13 +00:00
|
|
|
// const writeFile = (filename, file) => {
|
|
|
|
// fs.writeFile(filename, file, (err) => {
|
|
|
|
// if (err) return res.status(500).send(err.message || err);
|
|
|
|
// res.status(201).send(filename);
|
|
|
|
// });
|
|
|
|
// }
|
|
|
|
|
|
|
|
//upload file to s3 bucket
|
|
|
|
const uploadFile = (filename, file) => {
|
|
|
|
filename = filename.split("/");
|
|
|
|
filename = filename[filename.length-1]
|
|
|
|
const params = {
|
|
|
|
Bucket: "localstacktest",
|
|
|
|
Key: filename,
|
|
|
|
Body: file
|
|
|
|
};
|
|
|
|
s3.putObject(params, function (err, data) {
|
2021-04-28 19:58:25 +00:00
|
|
|
if (err) return res.status(500).send(err.message || err);
|
2021-04-30 00:23:13 +00:00
|
|
|
res.status(201).send(filename);
|
2021-04-28 19:58:25 +00:00
|
|
|
});
|
2021-04-30 00:23:13 +00:00
|
|
|
};
|
|
|
|
//
|
2021-04-28 19:58:25 +00:00
|
|
|
form.parse(req, (err, fields, files) => {
|
|
|
|
if (err) return res.status(400).send(err.message || err);
|
|
|
|
if (!url.query) url.query = fields;
|
|
|
|
["N", "t"].forEach(k => { if (!url.query[k] && fields[k] != null) url.query[k] = fields[k]; });
|
|
|
|
|
|
|
|
/* look for first uploaded file entry */
|
|
|
|
if (!files) return res.status(400).send("Missing file");
|
|
|
|
const fentries = Object.entries(files);
|
|
|
|
if (fentries.length == 0) return res.status(400).send("Missing file");
|
|
|
|
|
|
|
|
/* read file */
|
|
|
|
const file = fentries[0][1];
|
|
|
|
|
|
|
|
fs.readFile(file.path, (err, body) => {
|
|
|
|
if (err) return res.status(500).send(err.message || err);
|
|
|
|
const tmpFile = newFile();
|
2021-04-30 00:23:13 +00:00
|
|
|
uploadFile(tmpFile, body);
|
|
|
|
//writeFile(tmpFile, body);
|
2021-04-28 19:58:25 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
};
|