multer_-_robota_z_zavantazhennjam_fajliv_zobrazhen

multer - робота з завантаженням файлів / зображень

multer посилання Для налаштування сховища ми скористаємося методом бібліотеки diskStorage. Налаштування сховища для бібліотеки multer включає два основні параметри: destination і filename.

  • destination (призначення): Цей параметр визначає, в яку директорію будуть зберігатися завантажені файли. Він реалізований як функція, яка отримує три аргументи: запит (req), файл (file) і функцію зворотного виклику (cb). Функція зворотного виклику використовується для передачі директорії, в яку слід зберегти файл. У даному випадку, цю директорію ми визначии заздалегідь у константі TEMP_UPLOAD_DIR, що вказує на тимчасову директорію для завантажень.
  • filename (ім'я файлу): Цей параметр визначає, яке ім'я буде надане завантаженому файлу. Він також реалізований як функція з трьома аргументами: запит (req), файл (file) і функція зворотного виклику (cb). Щоб уникнути конфліктів між файлами з однаковими іменами, до оригінального імені файлу додамо унікальний суфікс. Цей суфікс створюється за допомогою поточної дати і часу у мілісекундах, що гарантує унікальність кожного імені файлу.
// src/constants/index.js

export const TEMP_UPLOAD_DIR = path.join(process.cwd(), 'temp');
export const UPLOAD_DIR = path.join(process.cwd(), 'uploads');
// src/middlewares/multer.js

import multer from 'multer';
import { TEMP_UPLOAD_DIR } from '../constants/index.js';

const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, TEMP_UPLOAD_DIR);
  },
  filename: function (req, file, cb) {
    const uniqueSuffix = Date.now();
    cb(null, `${uniqueSuffix}_${file.originalname}`);
  },
});

export const upload = multer({ storage });

Приклад функціїт що буде перевіряти, чи існує директорія за вказаним шляхом (url). Якщо директорія не існує, то функція створить її

// src/utils/createDirIfNotExists.js

import fs from 'node:fs/promises';

export const createDirIfNotExists = async (url) => {
  try {
    await fs.access(url);
  } catch (err) {
    if (err.code === 'ENOENT') {
      await fs.mkdir(url);
    }
  }
};
  • /sites/data/pages/multer_-_robota_z_zavantazhennjam_fajliv_zobrazhen.txt
  • Последнее изменение: 2024/06/22 09:08
  • tro