Node.js - expressjs - multer req.files输出为空

时间:2014-11-18 12:31:33

标签: node.js express multer

我正在使用multer从此表单中获取文件

<form action="/api/pimage" method="POST" enctype="multipart/form-data">
    <fieldset>
        <input type="file" name="profileimage">
        <input type="submit">
    </fieldset>
</form>

使用此服务器端脚本

app.post('/api/pimage', function(req, res, next) {
    console.log(req.body, req.files);
});

问题是req.body正在打印{profileimage:'image.png'} 和req.files正在打印{} 你在哪里看到问题? 感谢

P.S。我正在使用app.use(bodyParser.urlencoded({ extended: false }));来获取req.body和app.use(multer({ dest: './uploads/'}));来获取req.files

3 个答案:

答案 0 :(得分:1)

我发现在multer旁边使用bodyParser会导致req.file未定义。如果您遇到问题,请务必检查。

答案 1 :(得分:0)

我把MY(有很多我想象的,肯定更好的)解决方案用来帮助很多像我这样的人,因为我在整整一天都进行了搜索; - (

var express = require('express');
var fileUpload = require('express-fileupload');
var fs = require("fs");
var app = express();

console.log('étape 0');

app.use(express.static('mesStatic'));
app.use(fileUpload());

console.log('étape 1');

app.get('/indexFileUpload.htm', function (req, res) {
   res.sendFile( __dirname + "/" + "indexFileUpload.htm" );
})

console.log('étape 2');

app.post('/file_upload', function (req, res) {

   console.log('étape 3');
   console.log('req.files:' , req.files);

   if (!req.files) {
       res.send('No files to upload.');
       return;
   }

   console.log('req.files.file.data:' , req.files.file.data);
   var bufDataFile = new Buffer(req.files.file.data, "utf-8");
   console.log('étape 3.1');
   console.log('__dirname : ' + __dirname);

   fs.writeFile(__dirname + '/file_upload/output.txt', bufDataFile,  function(err) {
      if (err) {
         return console.error(err);
      }
      else {
         console.log("Data written successfully !");
      }      
      console.log('étape 4');
      res.end('Fin OK !!!');  
   })
})
var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port

   console.log("Example app listening at http://%s:%s", host, port);
})

答案 2 :(得分:0)

location = domain.com/abc/xyz/lmn/1.0.0-alpha/abc.html { rewrite ^(.*)$ domain.com/abc/xyz/lmn/1.0/abc.html; } 中要求req.file之前,您必须提供为multer定义的上传功能,您可以按照下面给出的代码

function(req, res)