Я новичок в node js. У меня есть и html-форма, в которую вводится файл, например -

  <form action="importlist_action" method="post" enctype="multipart/form-data">
  Select File: 
  <input type="file" name="file" id="file" tabindex="1" />
  </form>

Теперь я перенаправил этот почтовый запрос на следующий метод контроллера.

 exports.doImport = function(req, res) {
     console.log('Post values: ' + JSON.stringify(req.body));
     console.log("File path : " +  req.body.file);
 }

Результат, который я получаю здесь -

  Post values: {}
  File path : undefined

Мне нужен путь к файлу, который выбран в форме выше в контроллере. может кто-нибудь поправьте меня, что я здесь делаю не так?

Любая помощь будет очень признательна.

3
Niraj Chapla 26 Апр 2014 в 16:03

2 ответа

Лучший ответ

Если вы используете Express 3.x и промежуточное ПО bodyParser (), вам следует искать файлы в разделе req.files.

Если вы используете Express 4.x, вам придется использовать отдельный модуль для чтения многостраничного запроса. Примеры таких модулей: busboy (/ connect-busboy / multer < / a> / преобразовано) и грозный.

Как упоминалось в @adeneo, не все браузеры предоставляют фактический путь к файлу, но большинство по крайней мере предоставляют имя файла. И Busboy, и Formidable предоставляют вам доступ к имени файла.

0
mscdex 26 Апр 2014 в 12:11

Вы должны быть осторожны, чтобы node.js не загружал файлы в папку по умолчанию, как это сделал бы PHP.

Вероятно, вы ищете промежуточное ПО, которое сделает это за вас:

http://www.senchalabs.org/connect/bodyParser.html

0
Tug 26 Апр 2014 в 12:11