cloudinary上的图像上传在heroku中不起作用

Posted

技术标签:

【中文标题】cloudinary上的图像上传在heroku中不起作用【英文标题】:Image upload on cloudinary not working in heroku 【发布时间】: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) 
       
   

【问题讨论】:

【参考方案1】:

在Heroku config vars 上设置 Cloudinary 环境变量(例如,process.env.CLOUD_NAME)可能会有所帮助。 或者只是尝试添加 CLOUDINARY_URL 环境变量(可以在 Cloudinary 仪表板上找到),那么您就不需要在 cloudinary.config() 上显式声明它们。

【讨论】:

我已经在heroku config中添加了环境变量 嗨,尼克,由于您也在 Cloudinary 论坛上发帖,我们可以继续在该平台上为您提供帮助。

以上是关于cloudinary上的图像上传在heroku中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

cloudinary 图像在本地与 laravel 8 中的 img 标签配合良好,但在 heroku/production 上不适用——img 在 heroku 上显示空白

Ruby on rails bootsy + cloudinary 上传图片麻烦

我可以在不将图像上传到 cloudinary 的情况下转换图像吗?

django cloudinary 通过 url 上传远程图像 - 文件名无效

Cloudinary 如何更新/编辑数组中的图像

cloudinary 在尝试上传图像时返回一个空对象 + 图像未上传(快速服务器)