使用Express.js上传图片至Cloudinary时出错,请求技术协助
Express.js 上传图片至 Cloudinary 故障排查请求
错误信息

我在使用Express.js将图片上传至Cloudinary时遇到问题,已查看平台同类问题但无解决方案生效,恳请协助排查。
Cloudinary 配置代码
const cloudinary = require('cloudinary').v2 const dotenv = require('dotenv') dotenv.config() cloudinary.config({ cloud_name: process.env.CLOUDINARY_NAME, api_key: process.env.CLOUDINARY_API_KEY, api_secret: process.env.CLOUDINARY_API_SECRET }) exports.uploads = async (file, folder) => { // eslint-disable-next-line no-useless-catch try { const result = await cloudinary.uploader.upload(file, { use_filename: true, folder }) return { url: result.url, id: result.public_id } } catch (error) { throw error } }
multer.js
const multer = require('multer') const fs = require('fs') const UPLOADS_DIR = './uploads' if (!fs.existsSync(UPLOADS_DIR)) { fs.mkdirSync(UPLOADS_DIR) } const storage = multer.diskStorage({ destination: (req, file, cb) => { cb(null, UPLOADS_DIR) }, filename: (req, file, cb) => { const timestamp = new Date().toISOString().replace(/:/g, '-') const originalname = file.originalname || 'unknown' cb(null, `${timestamp}-${originalname}`) } }) const fileFilter = (req, file, cb) => { if (file.mimetype === 'image/jpeg' || file.mimetype === 'image/png') { cb(null, true) } else { // reject file cb({ message: 'Unsupported file format' }, false) } } const upload = multer({ storage, limits: { fileSize: 1024 * 1024 }, fileFilter }) module.exports = upload
ProductController.js(上传图片并将链接存入数据库)
const createProduct = async (req, res) => { const { name, price, description } = req.body console.log('Received request with data:', { name, price, description }) const uploader = async (path) => await cloudinary.uploads(path, 'Images') try { if (req.method === 'POST') { const urls = [] const files = req.files for (const file of files) { const { path } = file const newPath = await uploader(path) urls.push(newPath) fs.unlinkSync(path) } console.log('Cloudinary Upload URLs:', urls) // creating the product const product = await new Product({ name, description, price, files: urls }) await product.save() return res.status(200).json({ success: true, message: 'product created sucessfully', data: product }) } else { return res.status(405).json({ err: `${req.method} method not allowed` }) } } catch (error) { console.error('Error creating product:', error) return res.status(412).send({ success: false, message: error.message }) } }
内容的提问来源于stack exchange,提问作者Jamal Fakhriddinov
相关产品推荐
相关产品推荐

