首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >多个req.body始终显示为空

多个req.body始终显示为空
EN

Stack Overflow用户
提问于 2018-08-11 23:30:37
回答 2查看 1.4K关注 0票数 0

我正在学习nodejs和express,我正在尝试上传文件,下面是我的代码

代码语言:javascript
复制
const express = require('express');
const multer = require('multer');
const app = express();
const port = process.env.PORT||3000;
const path = require('path');
const fs= require('fs');
const xlsx = require('node-xlsx');
const bodyParser=require('body-parser')

const storage=multer.diskStorage({
  destination:'./public/uploads',
  filename:function(req,file,cb){
    cb(null,file.fieldname+'-'+Date.now()+path.extname(file.originalname))
  }
})

const upload=multer({
  storage:storage
})


app.set('port',port);
app.set('view engine', 'ejs');
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static('./public'));

app.post('/uploadTest', upload.single('myImage'),function (req, res, next) {
setTimeout(function(){

  console.log(req.files);
  console.log(req.body);// {"someParam": "someValue"}
  res.send(req.body);


}, 3000);


  // req.file is the `avatar` file
  // req.body will hold the text fields, if there were any
})

var server=app.listen(app.get('port'),(req,res)=>{
  console.log(`server started at port ${app.get('port')}`)
});

下面是我的HTML

代码语言:javascript
复制
<form action="/uploadTest" method="post" enctype="multipart/form-data">
    <input type="file" name="myImage"/>
    <input type="submit" value="Add File"/>
</form>

所以我的问题是console.log(req.body);// {"someParam": "someValue"},这总是显示空对象,我谷歌了很多,但不能使它工作

这是我得到的输出

代码语言:javascript
复制
[ { fieldname: 'myImage',
    originalname: 'SampleXLSFile_19kb.xls',
    encoding: '7bit',
    mimetype: 'application/vnd.ms-excel',
    destination: './public/uploads',
    filename: 'myImage-1534000938255.xls',
    path: 'public\\uploads\\myImage-1534000938255.xls',
    size: 19456 } ]
{}

提前感谢您的帮助

EN

回答 2

Stack Overflow用户

发布于 2018-08-11 23:41:23

req.body将保存表单中的任何文本字段(如果有),本例中没有文本字段。您没有明确提到要对该文件执行什么操作,但是当您记录req.files数组时,您可以看到文件上传成功。它在那里有你的文件对象。您应该能够使用path或对象的buffer属性对该文件执行操作,该对象包含整个文件的缓冲区。

票数 0
EN

Stack Overflow用户

发布于 2018-08-12 00:56:32

在您的app.js中更改以下内容:

代码语言:javascript
复制
const upload=multer({
  dest:'./public/uploads'
})

试一试,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51801180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档