Cloudinary上传聚合在nodejs、multer、express、typescript中出错

问题描述 投票:0回答:1

我正在使用 Cloudinary 在 Nodejs、Expressjs 和 Typescript 应用程序中使用 Multer 上传图像。在我的路线 req.file 中,一个文件来自前端,但它正在使用 uploadImage 函数上传到 Cloudinary,它给了我控制台聚合错误,我从 Cloudinary 的文档中设置了所有内容,因为我正在将 base64 字符串上传到 Cloudinary。如何解决这个问题呢。请帮忙解决这个错误。

按照 Cloudinary 文档的链接使用我正在使用的 Multer 在 Nodejs 中上传文件

将文件上传到 cloudinary 时出现错误图片。

enter image description here

上传.ts

import multer from "multer";

const storage = multer.memoryStorage();
export const upload = multer({ storage: storage });

cloudinary.ts

import { v2 as cloudinary, UploadApiResponse } from 'cloudinary'
import dotenv from "dotenv";
import { ErrorHandler } from './errorHandler';
dotenv.config()

cloudinary.config({
    cloud_name: process.env.CLOUDINARY_CLOUD_NAME,
    api_key: process.env.CLOUDINARY_API_KEY,
    api_secret: process.env.CLOUDINARY_SECRET_KEY
});

export interface UploadedFile extends Express.Multer.File { }

export const uploadImage = async (file: UploadedFile) => {

    try {
        const b64 = Buffer.from(file.buffer).toString("base64");
        const dataURI = "data:" + file.mimetype + ";base64," + b64;

        const result: UploadApiResponse = await cloudinary.uploader.upload(dataURI);

        return {
            id: result.public_id,
            url: result.secure_url
        }
    } catch (error: any) {
        console.error('Error uploading image:', error.message);
        throw new ErrorHandler(500, error.message)
    }
};



export { cloudinary }

路线.ts

import express, { NextFunction, Request, Response } from "express";
import { upload } from "../middlewares";
import { ErrorHandler, UploadedFile, uploadImage } from "../utils";
import { bannerService } from "../services";

const router = express.Router();

router.post("/upload-image", upload.single("image"), async (req: Request, res: Response, next: NextFunction) => {
    try {
        const image = await uploadImage(req.file as UploadedFile)


        res.status(200).send(image)
    } catch (error: any) {
        return next(new ErrorHandler(500, error.message))
    }
})

export default router
node.js typescript express
1个回答
0
投票

我也遇到了同样的问题,请问你解决了吗?

© www.soinside.com 2019 - 2024. All rights reserved.