文件上传到帆

时间:2015-09-23 23:15:42

标签: node.js upload sails.js

我在节点/风帆中遇到一个奇怪的问题并且难以排除故障。我可以通过上传表单上传小的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')
},

2 个答案:

答案 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(不太可能)的错误。