当前位置: 首页 > 知识库问答 >
问题:

req.file未定义:使用multer在express中上传图像

长孙玉泽
2023-03-14

我试图使用multer在express服务器中上载图像,但是,使用postman上载图像时,使用下面的路由会给出json消息{msg:'image uploaded successed'}(即正确到达了路由),但是req.file给出undefined。为什么?相关的文件结构如下所示,以确保我正确引用了目的地:

UploadRoutes.js

import path from 'path';
import express from 'express';
import multer from 'multer';

const router = express.Router();

const storage = multer.diskStorage({
  destination(req, file, cb) {
    cb(null, 'uploads');
  },
  filename(req, file, cb) {
    cb(
      null,
      `${file.fieldname}-${Date.now()}${path.extname(file.originalname)}`
    );
  },
});

function checkFileType(file, cb) {
  const filetypes = /jpg|jpeg|png/;
  const extname = filetypes.test(path.extname(file.originalname).toLowerCase());
  const mimetype = filetypes.test(file.mimetype);

  if (extname && mimetype) {
    return cb(null, true);
  } else {
    cb('Images only!');
  }
}

const upload = multer({
  storage,
  fileFilter: function (req, file, cb) {
    checkFileType(file, cb);
  },
});

router.post('/', upload.single('image'), (req, res) => {
  console.log(req.file);
  try {
    res.status(200).json({ msg: 'image uploaded successfully' });
  } catch (error) {
    console.error(error.message);
  }
  // res.send(`/${req.file.path}`);
});

export default router;

共有1个答案

阎元徽
2023-03-14

只需检查正文form-data请求,因为如果应用程序文件中有这一行,您的代码是正确的

app.use("/uploads", express.static("uploads"));

请求标头

 类似资料:
  • 我已经看了很多这个问题的答案,但我还没有找到一个可行的解决方案。我正在尝试制作一个Web应用程序,您可以使用Express和multer上传文件,我有一个问题,没有文件正在上传,req.file总是未定义。 下面是我的代码 表格 非常感谢帮助,这快把我逼疯了。

  • 除了图像文件之外,所有的数据都被发送到后端。我一直得到req.file是未定义的,这阻止了数据存储在数据库中。 在前端,我有一个表单,收集来自用户的输入,包括一张照片和一个文本描述。这是在一个组件文件中。

  • 我正在尝试使用Express 4.0上传单个图像文件文本字段 1) 穆特的要求。车身要求。如果登录控制台,则未定义文件对象 2)res.json(测试时也res.send)获取错误-TypeError:res.json不是Object.handle的函数) multer使用力矩配置如下。js表示日期,几乎是multer Github文档中的一行对一行: 这是客户端表单 我做错了什么?

  • 问题内容: 我试图得到一个简单的文件上传机制的工作与快车4.0,但我不断收到对在体内。以下是相关代码: ..和随附的帕格代码: 解决方案 由于以下mscdex的响应,我已切换为使用而不是: 问题答案: 该模块仅处理JSON和urlencoded表单提交,而不是多部分提交(如果您要上传文件,情况就是如此)。 对于multipart,您需要使用诸如或或(multiparty / formidable是

  • 我正在尝试上传文件使用react和axios到节点后端使用Multer。 当我将表单用作: 它工作得很好,但当使用axios时,文件是未定义的: 我将axios用作: 我后端如下: 有谁能帮我一下吗?我真的被卡住了。我需要在后端上传图像。

  • 我收到此意外错误nodejs(Express)。每当我需要控制台时。文件或请求。文件,未定义为控制台 三个文件如下: 用于注册 处理所有multer配置 所有文件的父级