如何使用 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.
我在使用 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.