You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Node/Expressjs向MongoDB上传表单图片时加载报错如何解决

问题排查结果

核心错误出在Buffer.alloc()方法的错误调用:
Buffer.alloc()的语法为Buffer.alloc(size[, fill[, encoding]]),第一个入参要求为数字类型的缓冲区容量大小,你代码中把base64编码后的字符串encode_img作为第一个参数传入,触发了参数类型不匹配的报错。

修复方案

方案1:直接替换错误方法

将代码中:

dp:Buffer.alloc(encode_img,'base64')

替换为:

dp: Buffer.from(encode_img, 'base64')

Buffer.from(string[, encoding])支持直接传入字符串和对应的编码格式,将base64字符串转为Buffer对象。

方案2:简化冗余转码流程

你已经通过fs.readFileSync()直接读取到了图片的原始Buffer,不需要多做一次转base64再转Buffer的操作,可以直接简化代码:

app.post('/register',upload.single('img'), (req, res) => {
    // 直接读取原始Buffer即可,无需额外转码
    var img = fs.readFileSync(req.file.path);
    var final_dp={
        contentType:req.file.mimetype,
        dp: img
    }
    // 后续原有逻辑
    try {
    const password = req.body.fPass; 
    const Spassword = req.body.sPass;
    if(password == Spassword){
        var obj = {
            dp: final_dp,
            // 剩余业务字段

内容的提问来源于stack exchange,提问作者Guntuku Chaitanya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:09:01