UNPKG

synt_backend

Version:

Synt light-weight node backend service

66 lines (60 loc) 1.76 kB
const express = require("express"); const { formidable } = require("formidable"); const router = express.Router(); const db = require("./../mysql/models/index"); const userHelper = require("./../helpers/user"); import { uploadFileToBucket } from "./../helpers/upload"; // routes router.post("/", postUpload); module.exports = router; async function postUpload(req, res, next) { const { t } = req; let user = await userHelper.getAuthUser(req); if (user) { new Promise((resolve, reject) => { let file; let formData = {}; const form = formidable({ multiples: true }); // multipart required form.parse(req, async (err, fields, files) => { if (err) { reject(err); } file = files.file[0]; }); form.on("field", (fieldName, fieldValue) => { formData[fieldName] = fieldValue; }); form.once("end", () => { console.log("done"); resolve({ file, formData }); }); }) .then((response) => { if (!response.file) { return res.json({ success: false, error: t("api.uploads.errors.fileError", "File error."), }); } if (!response.formData.bucket) { return res.json({ success: false, error: t("api.uploads.errors.awsBucketError", "AWS Bucket error."), }); } return uploadFileToBucket(response.file, response.formData.bucket) .then((response) => { return res.json(response); }) .catch((error) => { res.json({ success: false, error }); }); }) .catch((err) => { if (err) { next(err); return; } }); } }