sheetaki/api/save/index.js
2021-05-06 14:01:18 -05:00

44 lines
1.6 KiB
JavaScript

const URL = require('url'), fs = require('fs');
const do_wb = require('../../src/util');
const formidable = require('formidable-serverless');
const tmp = require('tmp');
const AWS = require('aws-sdk');
const { uploadFile } = require('../s3');
module.exports = function (req, res) {
res.setHeader('Access-Control-Allow-Origin', '*');
const url = URL.parse(req.url, true);
// const s3 = new AWS.S3({ endpoint: 'http://localhost:4566', s3ForcePathStyle: true });
const s3 = new AWS.S3();
/* parse form data */
const form = formidable({ multiples: true, maxFileSize: 2 * 1024 * 1024 });
/*create temp file*/
const newFile = () => {
const tmpobj = tmp.fileSync({postfix: '.xlsx'});
return tmpobj.name;
}
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, async (err, body) => {
if (err) return res.status(500).send(err.message || err);
const tmpFile = newFile();
const result = await uploadFile(tmpFile, body);
console.log(result);
res.send(result.key);
});
});
};