如何使用 NodeJS multer 将图像上传到外部文件夹

How to upload image to external folder using NodeJS multer

我在使用 multer 包在 nodejs 中上传目标时遇到问题。 图片正在上传到 nodejs 的文件夹中。 Bt 我想将它存储在项目根文件夹之外的不同路径中。 这是下面的代码

const imageURL = "http://localhost/demoAdmin/images/"; 

    const imageStorage = multer.diskStorage({
      destination: imageURL, // Destination to store image
      filename: (req, file, cb) => {
        cb(
          null,
          file.fieldname + "_" + Date.now() + path.extname(file.originalname)
        );
      },
    });

    const imageUpload = multer({
      storage: imageStorage,
      limits: {
        fileSize: 1000000, // 1000000 Bytes = 1 MB
      },
      fileFilter(req, file, cb) {
        if (!file.originalname.match(/\.(png|jpg)$/)) {
          // upload only png and jpg format
          return cb(new Error("Only images allowed"));
        }
        cb(undefined, true);
      },
    }).single("image");

    imageUpload(req, res, (err) => {
      if (err) {
        if (err.message) {
          return res.status(500).json({
            success: 0,
            msg: err.message,
          });
        }
        console.log()
        return res.status(500).json({
          success: 0,
          msg: "Only images allowed",
        });
      }
      res.status(200).json({
        success: 1,
        msg: req.file,
      });
    });

如果您能提供帮助,我们将不胜感激! 谢谢

您的 imageUrl 变量的问题是它没有指向您的 server/host 上的绝对路径。

您需要使用host/server您要在其中存储图像的目录的绝对路径。

例如:

const imageURL = "/usr/tmp/demoAdmin/images/"; 

另外,destination 需要一个函数:

destination: (req, file, callback) =>
      callback(null, imageUrl);
}

您的图片URL path/value 不正确

试试这个,

destination: function (req, file, cb) {
   cb(null, path.join(__dirname + '../../../some/folder/outside/project'))
 }

或者您可以指定要将文件上传到的文件夹的绝对路径。例如:图像URL = "c:\name\myfolder"

要上传您的图像,托管在 URL 尝试 Cloudinary This article is helpful.

对于 s3,您可以使用 Multer-S3.