繁体   English   中英

如何使用 Node/Multer 在 post 请求上捕获 FormData

[英]How to capture FormData on a post request using Node/Multer

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

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

表单数据附加

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

提前致谢

角度邮政服务

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();
});

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM