我在节点/风帆中遇到一个奇怪的问题并且难以排除故障。我可以通过上传表单上传小的xls文件,但是较大的文件不会处理/上传,这是一个简单的测试,当传递一个小文件(500-1000行)时,它处理得很好,我得到了控制台日志。一个大的(20,000行)文件只是在上传时旋转。
我的表单如下:
<div class="row col-xs-12">
<form id="uploadForm"
enctype="multipart/form-data"
action="/utility/test_req"
method="post">
<label for="Parse Through Row" class="control-label">Parse</label>
<input type="text" name="num_rows" />
<input type="file" name="csv_file" />
<input type="hidden" name="_csrf" value="<%= _csrf %>" />
<input type="submit" class="btn btn-default" value="Upload CSV"/>
</form>
</div>
我的控制器看起来像这样:
test_req: function (req, res, next){
console.log("here");
console.log(req.params.all());
res.redirect('/utility/migration')
},
答案 0 :(得分:1)
将_crsf
标记移动到表单的顶部,我相信输入字段是由浏览器按顺序发送的,因此,通过风帆以相同的顺序进行解析。 csrf令牌是时间限制的,所以你得到一个短的使用窗口,然后它们失效,然后如果你有一个大文件,首先你的文件得到处理(或文件),当帆完成后,它将解析你的令牌,但随后为时已晚。
<form>
<input type="hidden" name="_csrf" value="<%= _csrf %>" />
// The rest of the inputs here, including the file input.
<input type="submit" class="btn btn-default" value="Upload CSV"/>
</form>
它现在应该工作:)
答案 1 :(得分:0)
这是一个csrf问题。全局禁用csrf允许使用更大的文件来访问控制器操作。我不确定这是配置问题(可能)还是csrf或sails(不太可能)的错误。