【发布时间】:2021-08-29 12:42:06
【问题描述】:
我在 node.js 应用程序中使用 multer 和 cloudinary 进行图像上传。当我处于开发模式时,它工作得很好,但是在部署到 heroku 之后,我在浏览器控制台中遇到错误 服务器响应状态为 503(服务不可用)。当我检查 heroku 日志时,它显示为 at=error code=H12 desc="Request timeout" method=POST path="/api/users/upload/avatar" 我已经在heroku中添加了我的环境变量。可能是什么问题?
我的配置文件
const {config,uploader } = require('cloudinary').v2
const cloudinaryConfig = (req,res,next) => {
config({
cloud_name: process.env.CLOUD_NAME,
api_key: process.env.API_KEY,
api_secret: process.env.API_SECRET,
});
next()
}
module.exports ={cloudinaryConfig,uploader}
混合文件
const DatauriParser = require('datauri/parser');
const parser = new DatauriParser();
const storage = multer.memoryStorage();
const multerUploads = multer({ storage,fileFilter:(req,file,cb)=>{
let ext = path.extname(file.originalname);
if (ext !== ".jpg" && ext !== ".jpeg" && ext !== ".png") {
cb(new Error("File type is not supported"), false);
return;
} cb(null,true)
} }).single('image');
const dataUri = req => parser.format(path.extname(req.file.originalname).toString(),req.file.buffer)
module.exports = {multerUploads,dataUri}
我的上传控制器
const uploadImage = async(req,res)=>{
const folder = req.path.split('/',3)[2]
if(!req.file){
throw new Error('Choose a picture to upload')
}
if(req.file){
const file = dataUri(req).content
const result = await uploader.upload(file,{
folder:`MobiHub/${folder}`,
width: 300,
height:300,
crop:'fill',
gravity: "faces"
})
const image = result.secure_url
res.json({image})
}
}
【问题讨论】:
标签: node.js heroku cloudinary image-upload