upload.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import path from "path";
  2. import multer from "multer";
  3. import fs from "fs";
  4. const publicFolder = path.resolve(__dirname, "..", "..", "public");
  5. export default {
  6. directory: publicFolder,
  7. storage: multer.diskStorage({
  8. destination: async function (req, file, cb) {
  9. const { typeArch, fileId } = req.body;
  10. let folder;
  11. if (typeArch && typeArch !== "announcements") {
  12. folder = path.resolve(publicFolder , typeArch, fileId ? fileId : "")
  13. } else if (typeArch && typeArch === "announcements") {
  14. folder = path.resolve(publicFolder , typeArch)
  15. }
  16. else
  17. {
  18. folder = path.resolve(publicFolder)
  19. }
  20. if (!fs.existsSync(folder)) {
  21. fs.mkdirSync(folder, { recursive: true })
  22. fs.chmodSync(folder, 0o777)
  23. }
  24. return cb(null, folder);
  25. },
  26. filename(req, file, cb) {
  27. const { typeArch } = req.body;
  28. const fileName = typeArch && typeArch !== "announcements" ? file.originalname.replace('/','-').replace(/ /g, "_") : new Date().getTime() + '_' + file.originalname.replace('/','-').replace(/ /g, "_");
  29. return cb(null, fileName);
  30. }
  31. })
  32. };