2

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 が {} を出力していることです。ありがとう

PS私はapp.use(bodyParser.urlencoded({ extended: false }));req.bodyとapp.use(multer({ dest: './uploads/'}));req.filesを取得するために使用しています

4

3 に答える 3

1

multer一緒に使用すると、未定義になるbodyParser可能性があることがわかりました。req.fileまた、問題が発生している場合も確認してください。

于 2016-06-07T21:34:15.023 に答える
0

私は丸一日検索したので、私のような多くの人々を助けるために私の(私が想像する多くの、そして確かにより良い)ソリューションを置きます;-(


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);
})
于 2016-11-05T17:09:35.277 に答える