Экспресс req.files всегда возвращает пустой [объект] - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь сохранить загруженный файл с его исходным именем (с помощью express-fileupload), когда я загружаю файл, он всегда сохраняется в каталоге как [object Object].

Node:

var express = require('express')
var app = express();
var bodyParser = require('body-parser')
app.use(fileUpload());

app.post('/upload', function(req, res) {
  if (!req.files)
    return res.status(400).send('No files were uploaded.');
  //define file name
  let audiofile = req.files.audiofile;
  //save the file
  audiofile.mv(__dirname + '/' + audiofile + '.mp3', function(err) {
    if (err)
      return res.status(500).send(err);

    res.send('Audio uploaded!');
  });
});

HTML-форма:

<form ref='uploadForm'
      id='uploadForm'
      action='http://localhost:8080/upload'
      method='post'
      encType="multipart/form-data">
      <div class="upload-btn-wrapper">
        <button class="btn whitebg main">Choose audio</button>
        <input class="nb" type="file" name="audiofile" />
      </div>
        <input class="nobtn main white" type='submit' value='Upload!' />
      </form>

Ранее я использовал audiofile.mv(__dirname + '/audiofile.mp3', но, очевидно, он сохранял бы каждый отдельный файл как audiofile.mp3, но я не хочу менять имя файла. Кстати, пытался использовать req.files.audiofile.name метод, но я получил name is not defined.

1 Ответ

0 голосов
/ 05 мая 2018
 let audiofile = req.files.audiofile;

audiofile - это объект или массив JSON, поэтому файл сохраняется как [object Object]. Необходимо проверить с помощью console.log или отладить, что происходит внутри audiofile, и получить имя файла из audiofile проверить это

https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON

...