如何将文件上传到Cloudinary中的某个文件夹?Node JS

hgb9j2n6  于 2023-06-05  发布在  Node.js
关注(0)|答案(2)|浏览(354)

在cloudinary中我有一个名为images的文件夹,我想将文件上传到该文件夹中。我已经设置了cloudinary config。存储选项和文件过滤器已完成。在请求中,我发送post请求,将文件上传到cloudinary,但不上传到文件夹。如何将文件上传到Cloudinary中的某个文件夹?

const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, './images/');
  },
  filename: (req, file, cb) => {
    cb(null, new Date().toISOString().replace(/:/g, '-') + file.originalname);
  }
});

const fileFilter = (req, file, cb) => {
  if (!file.mimetype.match(/jpe|jpeg|png|gif$i/)) {
    cb(new Error('File is not supported'), false);
    return;
  }

  cb(null, true);
};

const upload = multer({
  storage,
  fileFilter
});

router.post('/',  upload.single('profileImage'), async (req,res) => {
  const result = await cloudinary.v2.uploader.upload(req.file.path);
})
icnyk63a

icnyk63a1#

执行上载请求时,您可以指定一组用于该上载的选项。在这些选项中,您可以指定文件存储位置的“public_id”(文件名)和/或“文件夹”。
例如,要将文件上传到名为“test”的文件夹,您可以使用以下代码:

cloudinary.v2.uploader.upload(
    "path/to/file",
    {
        folder: "test",
    },
    function(error, result) {
        console.log(error,result);
    }
);

您可以通过文档的此部分找到上传方法的所有可用选项:https://cloudinary.com/documentation/image_upload_api_reference#upload_method

zz2j4svz

zz2j4svz2#

This answer不适合我使用"cloudinary": "^1.25.1"。从未调用回调。我假设它没有把第二个参数当作配置对象,但我没有费心去进一步研究它,因为我宁愿使用promise。
对于v2,基于promise的上传API工作得很好:

cloudinary.v2.uploader
  .upload(req.body.dataURL, {folder: "some-folder"})
  .then(result => {
    res.json({data: result});
    console.log(result);
  })
  .catch(err => {
    res.json({error: err.message});
    console.error(err);
  });

文档中没有显示.catch,但我还是添加了一个,因为任何请求都可能失败。

相关问题