【问题标题】:How to capture FormData on a post request using Node/Multer如何使用 Node/Multer 在 post 请求中捕获 FormData
【发布时间】:2020-10-30 18:54:59
【问题描述】:

我基本上需要在 mongodb 模式上保存一个 formData,使用 nodejs + express作为后端,multer作为中间件,这个formData由一个字符串和一个blob组成

我需要捕获 blob 和字符串并以某种方式保存在数据库中,但现在我什至无法在后端捕获

formData appends

我的 req.body 和我的 req.files 显示为未定义

提前致谢

在 Angular 上发布服务

addPost(message, blob): Observable<any> {
    var fd = new FormData();

    fd.append('id', message);
    fd.append('invoiceFile', blob);

    let httpHeaders = new HttpHeaders({
      Accept: 'multipart/form-data'
    });

    let options = {
      headers: httpHeaders
    };

    return this.http.post(`${addPost}`, fd, options);
  }

我的节点 server.js

  const express = require('express');
  const mongoose = require('mongoose');
  const cookieParser = require('cookie-parser');
  // const morgan = require('morgan');
  const app = express();
  const cors = require('cors');
  var fs = require('fs');

  const dbConfig = require('./config/env');

  app.options('*', cors());
  app.use(cors({ credentials: true, origin: true }));

   app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Credentials', 'true');
  res.header('Access-Control-Allow-Methods', 'GET', 'POST', 'DELETE', 'PUT');
  res.header(
    'Access-Control-Allow-Headers',
    'Origin, X-Requested-With, Content-Type, Accept'
  );
  next();
});

   app.use(express.json({ limit: '50mb' }));
   app.use(express.urlencoded({ extended: true, limit: '50mb' }));

   app.use(logger('dev'));

   mongoose.Promise = global.Promise;
   mongoose.connect(
  dbConfig.url,
  { useNewUrlParser: true }
);

  const auth = require('./routes/authRoutes');
  const posts = require('./routes/postRoutes');
  app.use(cookieParser());
  app.use(auth);
  app.use(posts);

 app.listen(3000, () => {
     console.log('Runnning on port 3000');
});

我的路线

router.post('/api/post/add-post', upload.any(), function(req, res) {

  console.log(req.body); // appear as undefined
  console.log(req.file); // appear as undefined
  res.status(204).end();
});

【问题讨论】:

    标签: node.js angular express multer


    【解决方案1】:

    尝试在发送表单时检查数据是否为空白。 它应该是 jpg/jpeg 或您要发送的格式。我的表单数据为空白,所以我意识到我必须发送文件名,即“image.jpg”,而不是整个文件详细信息 在下面发送快照,看看是否有帮助

    【讨论】:

      猜你喜欢
      • 2011-09-07
      • 1970-01-01
      • 2021-08-14
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      • 2013-05-16
      • 1970-01-01
      • 2012-08-12
      相关资源
      最近更新 更多