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

使用Node.js API上传图片时遇到的问题

解决图片上传的两个问题

修改后的完整代码

const multer = require('multer');
const fs = require('fs');
const path = require('path'); // 引入path模块提取文件扩展名

const storage = multer.diskStorage({
  destination: function (req, file, callback) {
    callback(null, './uploads');
  },
  filename: function (req, file, callback) {
    // 提取原文件扩展名并拼接到新文件名后
    const ext = path.extname(file.originalname);
    callback(null, file.fieldname + '-' + Date.now() + ext);
  }
});

// 仅处理名为"image"的单个文件字段
const upload = multer({ storage: storage }).single('image');

const uploadavatar = function (req, res) {
  upload(req, res, function(err) {
    if(err) {
      return res.end("Error uploading file." + err);
    }
    res.end("File is uploaded");
  });
};

问题解决说明

  1. 保留原图片扩展名:

    • 引入path模块,通过path.extname(file.originalname)获取上传文件的原始扩展名(如.jpg、.png)
    • 在生成文件名时将扩展名拼接进去,避免保存后的文件无后缀显示为"file"
  2. 限制仅允许"image"参数上传:

    • 替换.any('userPhoto')为.single('image'),multer只会处理请求中名为image的文件字段
    • 其他如file这类字段会被直接忽略,彻底避免多文件上传问题
    • 若需允许单个image字段上传多个文件,可改用.array('image', 1)(数字1为最大允许数量,可按需调整)

内容的提问来源于stack exchange,提问作者prabhat mohal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:27:10