在服务器端Javascript接收提交的POST文件对象

时间:2015-05-08 06:37:56

标签: javascript node.js meteor

当用户发送选择了文件/图像的多部分表单时,通常在Meteor或node.js中,服务器端POST url处理程序使用this.request或req或request对象来检测它是POST方法还是其他任何方法。它的标题等,但我不明白的是,这个请求对象的实际文件在哪里,我如何检索它,以便它可以用于图像/文件上传或服务器上的某些操作?

1 个答案:

答案 0 :(得分:0)

节点提供查询字符串 api来解析看起来像这样的字符串:

foo=bar&baz=qux&baz=quux&corge

...这也是多部分表格数据的发送方式。用该api解析这将返回一个对象:

{ foo: 'bar', baz: ['qux', 'quux'], corge: '' }

因此,您可以先检测请求的方法,如果是POST,您可以将处理程序附加到'data',将所有数据放入您自己的变量中,并'end' 1}},使用querystring解析它:

var qs = require('querystring');

// your request callback function would be something like:
function (request,response){
    if(request.method=='POST'){
        var body = '';
        request.on('data',function(data){
            body += data;

            //reject requests that have sent too much data (eg 2MB):
            if(body.length > 2e6){
                // Send HTTP status code for `Request Entity Too Large`:
                response.writeHead(413); 
                response.end();
        });
        request.on('end', function(){
             var form = qs.parse(body);
             //use form as object
        });
    } // end if
} // end handler