Multer无法在Express 4中获取上传表单数据

杨砖

我正在使用Ajax上传表单数据。multer(req.file,req.body)的输出始终为undefined/ {};

我的服务器代码:

import multer from 'multer';
import post from './router/api_post';

var upload = multer({dest: 'uploads/'});

app.use('/api/post', upload.single('thumb') , post);

api_post路由器文件:

import express from 'express';
var router = express.Router();

router
    .post('/', (req, res, next) => {
        console.log("POST POST");
        var post = {};
        console.log(req.body);
        console.log(req.file);
    });

export default router;

req.bodyis{}和req.file isundefined`的输出

我在浏览器端使用react并通过ajax上传数据:

  savePost(ev) {
    ev.preventDefault();
    var editor = this.refs.editorDom.getDOMNode();
    var ajaxReq = new AjaxRequest();
    var formData = new FormData();
    formData.append('post_id', this.state.post_id);
    formData.append('title', this.state.title);
    formData.append('author', this.state.author);
    formData.append('digest', this.state.digest);
    formData.append('content', editor.innerHTML);
    formData.append('content_source_url', this.state.content_source_url);
    formData.append('create_time', new Date());
    formData.append('thumb', this.state.thumb);
    ajaxReq.send('post', '/api/post', ()=>{
      if(ajaxReq.getReadyState() == 4 && ajaxReq.getStatus() == 200) {
        var result = JSON.parse(ajaxReq.getResponseText());
        if(result.ok == 1) {
          console.log("SAVE POST SUCCESS");
        }
      }
    }, '', formData);
  }

savePost()按钮的事件侦听器is回调。我确实用强大的能力成功上传了数据。我只是用穆尔特代替了强大的东西,但没有得到它。

我没有设置content-type属性。我在标题中找到它是, multipart/form-data; boundary=----WebKitFormBoundary76s9Cg74EW1B94D9

form的HTML是

<form id="edit-panel" data-reactid=".ygieokt1c0.1.0.1.0.1">
  <div id="title" class="form-group" data-reactid=".ygieokt1c0.1.0.1.0.1.0">
    <input type="text" class="form-control" name="title" value="" data-reactid=".ygieokt1c0.1.0.1.0.1.0.1">
  </div>
  <div id="author" class="form-group" data-reactid=".ygieokt1c0.1.0.1.0.1.1">
    <input type="text" class="form-control" name="author" value="" data-reactid=".ygieokt1c0.1.0.1.0.1.1.1">
  </div>
  <div id="thumb" class="form-group" data-reactid=".ygieokt1c0.1.0.1.0.1.2">
    <button class="btn btn-default" data-reactid=".ygieokt1c0.1.0.1.0.1.2.1">
      <input type="file" name="thumb" accept="image/*" data-reactid=".ygieokt1c0.1.0.1.0.1.2.1.0">
      <span data-reactid=".ygieokt1c0.1.0.1.0.1.2.1.1">UPLOAD</span>
    </button>
  </div>
  <div class="form-group" data-reactid=".ygieokt1c0.1.0.1.0.1.3">
    <textarea class="form-control" name="digest" rows="5" data-reactid=".ygieokt1c0.1.0.1.0.1.3.1"></textarea>
  </div>
  <div id="rich-text-editor" class="form-group" data-reactid=".ygieokt1c0.1.0.1.0.1.4">
    <div id="editor-div" class="form-control" contenteditable="true" data-reactid=".ygieokt1c0.1.0.1.0.1.4.1"></div>
  </div>
  <div id="content-source-url" class="form-group" data-reactid=".ygieokt1c0.1.0.1.0.1.5">
    <input type="text" class="form-control" name="content_source_url" value="" data-reactid=".ygieokt1c0.1.0.1.0.1.5.1">
  </div>
  <button class="btn btn-default" data-reactid=".ygieokt1c0.1.0.1.0.1.6">保存并提交</button>
</form>

我可以输出thumb,这是一个File{}对象。

感谢帮助。

杨砖

最后我发现问题是Content-Type

我曾经this.request.setRequestHeader("Content-Type", postDataType);将设置,然后将Content-Type设置postDataType'',那么实际的Content-Typein标头是, multipart/form-data; boundary=----WebKitFormBoundary76s9Cg74EW1B94D9如我最初提到的那样。

您可以看到之前有一个逗号和一个空格multipar/form-data我不知道这个逗号是从哪里来的。但是无论如何,当我删除逗号和空格时,一切都可以正常工作!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过带有表单数据和文件的 Angular HttpClient 上传文件,但 multer 不会获取文件

来自分类Dev

在Express中获取POST和GET请求的表单数据

来自分类Dev

在Go中无法获取Angular / Restangular表单数据

来自分类Dev

无法在req.body Express / node.js中获取表单数据

来自分类Dev

分段/表单数据上传-Node.js-Express.js

来自分类Dev

分段/表单数据上传-Node.js-Express.js

来自分类Dev

jQuery $.post() 无法上传文件和表单数据

来自分类Dev

文件上传可以正常工作,但是无法使用enctype =“ multipart / form-data”来获取表单数据

来自分类Dev

无法在 django 视图中的 url 中获取 GET 表单数据

来自分类Dev

无法使用ng-model获取表单数据

来自分类Dev

表单数据无法获取角度节点 mongodb

来自分类Dev

Express JS表单数据

来自分类Dev

Express Js无法从React Js检索提交的表单数据

来自分类Dev

检索文件数据而不上传(Express,Multer)

来自分类Dev

无法在iOS中使用NSURLSession多部分表单数据上传文件

来自分类Dev

无法使用 JWT 将文件上传到框 - curl:(26) 创建表单数据失败

来自分类Dev

使用 react/express/multer 上传文件夹中的文件

来自分类Dev

使用带有passport.js的express.js从POST获取表单数据

来自分类Dev

Multer仅从邮递员解析多部分/表单数据,而不从实际表单中解析

来自分类Dev

无法获取表单数组值

来自分类Dev

无法再从HttpServletRequest SpringBoot 2.2,Jersey 2.29获取表单数据

来自分类Dev

无法获取我的表单数据以发送到我的电子邮件

来自分类Dev

无法从HttpServletRequest读取表单数据

来自分类Dev

表单数据无法正确捕获

来自分类Dev

Django无法处理html表单数据

来自分类Dev

使用Supertest测试Express multer文件阵列上传

来自分类Dev

将multer用于Express Router内部的文件上传

来自分类Dev

在React to Express multer中使用Antd上传裁剪的图像

来自分类Dev

使用Angular,Node,Express,Multer的图像上传问题

Related 相关文章

  1. 1

    通过带有表单数据和文件的 Angular HttpClient 上传文件,但 multer 不会获取文件

  2. 2

    在Express中获取POST和GET请求的表单数据

  3. 3

    在Go中无法获取Angular / Restangular表单数据

  4. 4

    无法在req.body Express / node.js中获取表单数据

  5. 5

    分段/表单数据上传-Node.js-Express.js

  6. 6

    分段/表单数据上传-Node.js-Express.js

  7. 7

    jQuery $.post() 无法上传文件和表单数据

  8. 8

    文件上传可以正常工作,但是无法使用enctype =“ multipart / form-data”来获取表单数据

  9. 9

    无法在 django 视图中的 url 中获取 GET 表单数据

  10. 10

    无法使用ng-model获取表单数据

  11. 11

    表单数据无法获取角度节点 mongodb

  12. 12

    Express JS表单数据

  13. 13

    Express Js无法从React Js检索提交的表单数据

  14. 14

    检索文件数据而不上传(Express,Multer)

  15. 15

    无法在iOS中使用NSURLSession多部分表单数据上传文件

  16. 16

    无法使用 JWT 将文件上传到框 - curl:(26) 创建表单数据失败

  17. 17

    使用 react/express/multer 上传文件夹中的文件

  18. 18

    使用带有passport.js的express.js从POST获取表单数据

  19. 19

    Multer仅从邮递员解析多部分/表单数据,而不从实际表单中解析

  20. 20

    无法获取表单数组值

  21. 21

    无法再从HttpServletRequest SpringBoot 2.2,Jersey 2.29获取表单数据

  22. 22

    无法获取我的表单数据以发送到我的电子邮件

  23. 23

    无法从HttpServletRequest读取表单数据

  24. 24

    表单数据无法正确捕获

  25. 25

    Django无法处理html表单数据

  26. 26

    使用Supertest测试Express multer文件阵列上传

  27. 27

    将multer用于Express Router内部的文件上传

  28. 28

    在React to Express multer中使用Antd上传裁剪的图像

  29. 29

    使用Angular,Node,Express,Multer的图像上传问题

热门标签

归档