【发布时间】:2021-04-22 07:11:41
【问题描述】:
我尝试将图片上传到 cloudinary,但是当我上传一张图片时,它上传了两次到 cloudinary,当我上传 2 张图片时,它上传了 4 张等并返回了 uploadFiles =[]。所以我的代码有什么问题
我使用 multer-cloudinary 包和 multer 作为中间件 ..................................................... ......................
app.post("/multiple-upload", multerMiddleware.array("files"), async (req, res) => {
try {
if (!req.files) {
return res.status(200).json({ message: "Invalid file type" });
}
let uploadedFiles = imageUploaderHandler({ files: req.files });
return res.status(200).json({ message: "File stored", uploadedFiles });
} catch (error) {
console.log(error);
return res
.status(500)
.json({ message: "Something went wrong while uplaoding this item" });
}
})
const imageUploaderHandler = async ({ files }) => {
let file = {};
let uploadedFiles = [];
let newImages = files.map(async (item) => {
let result = await cloudinary.v2.uploader.upload(item.path)
console.log(result);
file.cloudinaryPublicId = result.public_id;
file.fileUrl = result.secure_url;
file.fileName = result.original_filename;
uploadedFiles.push(file);
});
return await Promise.all(newImages);
};
//Multer-cloudinary config
import cloudinary from "cloudinary";
import { CloudinaryStorage } from "multer-storage-cloudinary";
cloudinary.v2.config({
cloud_name: CLOUD_NAME,
api_key: API_KEY,
api_secret: API_SECRET,
});
let cloudinaryVersion = cloudinary.v2;
const fileStorage = new CloudinaryStorage({
cloudinary: cloudinaryVersion,
folder: "uploads",
filename: (req, file, cb) => {
const date = format(new Date(), "dd-MM-yy");
const fileType = file.mimetype == "video/mp4" ? "VIDEO" : "IMAGE";
const fileNameFormat = `${date}-${fileType}-${file.originalname}`;
cb(null, fileNameFormat);
},
});
const fileFilter = (req, file, cb) => {
if (!file.originalname.match(/\.(jpg|jpeg|gif|png|mp4)$/i)) {
cb(null, false);
} else {
cb(null, true);
}
};
export const multerMiddleware = multer({
storage: fileStorage,
fileFilter,
});
【问题讨论】:
标签: node.js image express multer cloudinary