| const multer = require("multer"); |
| const path = require("path"); |
| const fs = require("fs"); |
| const { v4 } = require("uuid"); |
| const { normalizePath } = require("."); |
|
|
| |
| |
| |
| |
| const fileUploadStorage = multer.diskStorage({ |
| destination: function (_, __, cb) { |
| const uploadOutput = |
| process.env.NODE_ENV === "development" |
| ? path.resolve(__dirname, `../../../collector/hotdir`) |
| : path.resolve(process.env.STORAGE_DIR, `../../collector/hotdir`); |
| cb(null, uploadOutput); |
| }, |
| filename: function (_, file, cb) { |
| file.originalname = normalizePath( |
| Buffer.from(file.originalname, "latin1").toString("utf8") |
| ); |
| cb(null, file.originalname); |
| }, |
| }); |
|
|
| |
| |
| |
| |
| const fileAPIUploadStorage = multer.diskStorage({ |
| destination: function (_, __, cb) { |
| const uploadOutput = |
| process.env.NODE_ENV === "development" |
| ? path.resolve(__dirname, `../../../collector/hotdir`) |
| : path.resolve(process.env.STORAGE_DIR, `../../collector/hotdir`); |
| cb(null, uploadOutput); |
| }, |
| filename: function (_, file, cb) { |
| file.originalname = normalizePath( |
| Buffer.from(file.originalname, "latin1").toString("utf8") |
| ); |
| cb(null, file.originalname); |
| }, |
| }); |
|
|
| |
| const assetUploadStorage = multer.diskStorage({ |
| destination: function (_, __, cb) { |
| const uploadOutput = |
| process.env.NODE_ENV === "development" |
| ? path.resolve(__dirname, `../../storage/assets`) |
| : path.resolve(process.env.STORAGE_DIR, "assets"); |
| fs.mkdirSync(uploadOutput, { recursive: true }); |
| return cb(null, uploadOutput); |
| }, |
| filename: function (_, file, cb) { |
| file.originalname = normalizePath( |
| Buffer.from(file.originalname, "latin1").toString("utf8") |
| ); |
| cb(null, file.originalname); |
| }, |
| }); |
|
|
| |
| |
| |
| const pfpUploadStorage = multer.diskStorage({ |
| destination: function (_, __, cb) { |
| const uploadOutput = |
| process.env.NODE_ENV === "development" |
| ? path.resolve(__dirname, `../../storage/assets/pfp`) |
| : path.resolve(process.env.STORAGE_DIR, "assets/pfp"); |
| fs.mkdirSync(uploadOutput, { recursive: true }); |
| return cb(null, uploadOutput); |
| }, |
| filename: function (req, file, cb) { |
| const randomFileName = `${v4()}${path.extname( |
| normalizePath(file.originalname) |
| )}`; |
| req.randomFileName = randomFileName; |
| cb(null, randomFileName); |
| }, |
| }); |
|
|
| |
| |
| |
| |
| |
| |
| function handleFileUpload(request, response, next) { |
| const upload = multer({ storage: fileUploadStorage }).single("file"); |
| upload(request, response, function (err) { |
| if (err) { |
| response |
| .status(500) |
| .json({ |
| success: false, |
| error: `Invalid file upload. ${err.message}`, |
| }) |
| .end(); |
| return; |
| } |
| next(); |
| }); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| function handleAPIFileUpload(request, response, next) { |
| const upload = multer({ storage: fileAPIUploadStorage }).single("file"); |
| upload(request, response, function (err) { |
| if (err) { |
| response |
| .status(500) |
| .json({ |
| success: false, |
| error: `Invalid file upload. ${err.message}`, |
| }) |
| .end(); |
| return; |
| } |
| next(); |
| }); |
| } |
|
|
| |
| |
| |
| function handleAssetUpload(request, response, next) { |
| const upload = multer({ storage: assetUploadStorage }).single("logo"); |
| upload(request, response, function (err) { |
| if (err) { |
| response |
| .status(500) |
| .json({ |
| success: false, |
| error: `Invalid file upload. ${err.message}`, |
| }) |
| .end(); |
| return; |
| } |
| next(); |
| }); |
| } |
|
|
| |
| |
| |
| function handlePfpUpload(request, response, next) { |
| const upload = multer({ storage: pfpUploadStorage }).single("file"); |
| upload(request, response, function (err) { |
| if (err) { |
| response |
| .status(500) |
| .json({ |
| success: false, |
| error: `Invalid file upload. ${err.message}`, |
| }) |
| .end(); |
| return; |
| } |
| next(); |
| }); |
| } |
|
|
| module.exports = { |
| handleFileUpload, |
| handleAPIFileUpload, |
| handleAssetUpload, |
| handlePfpUpload, |
| }; |
|
|