Sails.js:同时发布文本输入和文件

时间:2015-04-09 15:43:43

标签: javascript post sails.js multipartform-data enctype

我想在表单中发送文件和隐藏的输入文本。

<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">

在我的控制器请求中.body等于{} 当我删除enctype =“multipart / form-data”时,它适用于我的文本,但不适用于我的文件。

上传我的文件:

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的更多代码: 我的观点:view
我的控制器:controller

2 个答案:

答案 0 :(得分:5)

使用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

答案 1 :(得分:2)

要检索您的字段,您需要使用:

request.param("url")

您的文件

var file = request.file("xlsx_file_to_import");