Измените облачную папку для каждого маршрута, используя multer в Node.JS - PullRequest
0 голосов
/ 15 апреля 2020

Нашел этого парня с похожим вопросом: Обрабатывать пункт назначения для маршрута в nodejs с пакетом multer

Нет ответа для него, 4 месяца спустя, поэтому я надеюсь, что у меня есть Удачи!

Я использую multer-storage-cloudinary для загрузки файлов непосредственно в cloudinary без использования временного локального хранилища, и мне нужно потенциально изменить папку, в которой файл собирается для каждого маршрута .

Документация для multer-storage-cloudinary оставляет желать лучшего, касательно настройки функции для установки папки. Он приводит пример, но не говорит о том, что делает обратный вызов, что / как возвращается, каковы ожидаемые аргументы и т. Д. c: https://www.npmjs.com/package/multer-storage-cloudinary

кажется , что вторым аргументом в обратном вызове, вызываемом в конце функции, является то, что будет возвращено / установлено в качестве папки в Cloudinary - это правильно?

Так, например, если бы я делал это с помощью формы:

<form action="/location" method="POST" enctype="multipart/form-data">
    <input type="file" name="image">
    <input type="text" value="abcd" name="companyId" hidden>
    <input type="text" value="1234" name="locationId" hidden>
    <button type="submit">Submit</button>
</form>

И это в настройке multer-storage-cloudinary (при условии, что все остальное уже настроено на использование cloudinary) :

const storage = cloudinaryStorage({
  cloudinary: cloudinary,
  folder: function(req, file, callback) {
    let path;
    if(req.body.companyId && req.body.locationId) {
        path = `/my-project/${req.body.companyId}/${req.body.locationId}`;
    } else {
        path = '/my-project/uncategorized';
    }
    callback(undefined, path);
  }
});

Это установит папку, в которую загружается файл, как '/my-project/abcd/1234'?

...