Sails.js: одновременно вводите текст и файл

Я хочу отправить файл и скрытый вводимый текст в форме.

<form method="POST" action="/api/import_xlsx_data" enctype="multipart/form-data">
<input type="file" name="xlsx_file_to_import" accept=".xlsx" required>
<input id="url" type="HIDDEN" name="url" value="url-value">
<input type="submit" value="Envoyer">

In my controller request.body is equal to {}.
When I remove enctype="multipart/form-data" it works for my text but not for my file.

Чтобы загрузить мой файл:

uploadFile.upload({saveAs : fileName, dirname : directoryName},function onUploadComplete(err, files) { ...............});

Мой контроллер:

 importXLS: function (req, res) {
    var uploadFile = req.file('xlsx_file_to_import');
    //console.log(req.params()); -> send error params is not a function
    console.log(req.body); // send me {}
    console.log(req.param('url')); //send me undefined


...... }

Дополнительный код на pastbin: Мое представление: представление
Мой контроллер: контроллер


person damien marchand    schedule 09.04.2015    source источник


Ответы (2)


Используя skipper в качестве парсера тела, вы должны отправить текстовые параметры до ввода вашего файла.

Попробуй это:

<form method="POST" action="/api/import_xlsx_data" enctype="multipart/form-data">
  <input id="url" type="HIDDEN" name="url" value="url-value">  
  <input type="file" name="xlsx_file_to_import" accept=".xlsx" required>
<input type="submit" value="Envoyer">

Дополнительную информацию см. В документации для шкипера: https://github.com/balderdashy/skipper#text-parameters

person Community    schedule 04.06.2015

Чтобы получить свое поле, вам необходимо использовать:

request.param("url")

И ваш файл с

var file = request.file("xlsx_file_to_import");
person jaumard    schedule 09.04.2015
comment
Мой файл загружен, но я не могу получить URL-адрес с помощью req.param (url). Это не определено. - person damien marchand; 09.04.2015
comment
Не могли бы вы опубликовать код контроллера, пожалуйста? и скажите мне, что возвращает request.params () - person jaumard; 09.04.2015
comment
Извините, это request.params, это не функция, uploadFile.upload используется спереди или сзади? Потому что, если это возможно, отправьте только файл, а не полную форму. Вы также можете попробовать добавить еще одно поле в свою форму, чтобы увидеть, не меняет ли оно что-то - person jaumard; 09.04.2015
comment
uploadFile используется у меня на спине. Если я добавлю другой вход (не скрытый), он ничего не изменит. - person damien marchand; 09.04.2015
comment
Странно ... У меня нет других идей, извините: / у вашей формы ‹/form›? Потому что ты этого не пишешь. Не скрывайте это, чтобы посмотреть, не изменится ли что-то ... - person jaumard; 09.04.2015
comment
Я думаю, что моя форма в порядке. Добавляю пасбин ссылки. Скрыто или нет, я не вижу никаких изменений. - person damien marchand; 09.04.2015
comment
это может быть проблема с асинхронностью? - person damien marchand; 10.04.2015
comment
Не думайте, я просто смотрю код вашего контроллера и пытаюсь удалить var request = require ('request'); пожалуйста - person jaumard; 10.04.2015
comment
Он ничего не меняет после удаления request = require ('request'); - person damien marchand; 10.04.2015
comment
Есть ли у вас политики, которые могут касаться объекта req? - person jaumard; 10.04.2015
comment
Позвольте нам продолжить это обсуждение в чате. - person damien marchand; 10.04.2015