微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – Multer和Express / Node文件上传

req.files正在生成null,现在req.body也是空白的.我在这里搜索了所有的答案,但找不到多少.不幸的是,multer文档非常缺乏,所以希望有人已经完成了我现在的工作并知道发生了什么.

我的router.js文件是这样的:

var express = require('express');
var request = require('request');
var mid = require('../middleware');
var busboy = require('connect-busboy');
var fs = require('fs');
var multer = require('multer');
var upload = multer({dest: '../public/images/blog'});
var User = require('../data/models/user');
var router = express.Router();
...
...
...
...
/* POST saveblog router. */
router.post('/saveBlog',upload.any(),function(req,res,next) {
  console.log(req.body,'Body'); 
  console.log(req.files,'files');
  var title = req.body.titleInput;
  var body = req.body.bodyInput;
  request.post('http://' +req.headers.host + '/api/blog',{json: {body: body,title: title,userId: req.session.userId}},function(err,httpResponse,body) {
    if (err) {
      console.error('error posting blog');
    }
    console.log('Blog Post successfully uploaded');
  });
  return res.redirect('/blog');
}); 

module.exports = router;

所以我不完全确定这有什么问题,我最初把它作为upload.single(‘image’),但是那个也没用,所以谁知道.

这是我提交的玉石表格,如果有人可以提供帮助但不喜欢玉石,我相信我可以找到它的快速转换器.

form(action='saveBlog',enctype='multipart/form-data',method='post')
  h1 New Blog Post 
  fieldset(data-role='')
    label(for='title') Title 
    input(id='titleInput',name='titleInput',type='text',value='',placeholder='Your Title',require='true').form-control
    label(for='image') Your Title Image
    input(id='image',name='image',type='file',accept='image/*')
    br
    label(for='body') Your Article (Box is resizable)
    textarea(id='mytextarea',name='bodyInput').form-control
    input(type='submit',value='Post your Article').btn.btn-primary

解决方法

我今天一直在努力.我注意到的一件事是你正在使用upload.single(),你正在寻找的数据将在req.file而不是req.files.

我不确定这是不是你的问题.

仅供参考,这个精简的例子对我有用:

server.js

var express = require('express');
var app = express();

app.use(require('./routes'));

app.listen(8080);

routes.js

var express = require('express');
var multer = require('multer');
var upload = multer({ dest: '/tmp/' });
var router = express.Router();

/* POST saveblog router. */
router.post('/saveBlog','Body');
  console.log(req.files,'files');
  res.end();
});

module.exports = router;

我从Postman发布并得到了这个输出

{ test: '1' } 'Body'
[ { fieldname: 'asdas',originalname: 'vcenter.png',encoding: '7bit',mimetype: 'image/png',destination: '/tmp/',filename: '92f425268efaa45cad31f67ec8f14c2d',path: '/tmp/92f425268efaa45cad31f67ec8f14c2d',size: 54834 } ] 'files'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐