2014-10-26 131 views
1
var form = new formidable.IncomingForm(); 
form.parse(req, function(err, fields, files) { 
    if (err) { 
     res.status(200).send('parsing error'); 
    } 
}); 

var jsonObject; 
var imageArray = []; 

form.on('file', function(field, file) { 
    console.log(file); 
    if (file.type == 'application/json') { 
     jsonObject = JSON.parse(fs.readFileSync(file.path, 'utf8')); 
    } else if (file.type == 'image/jpeg') { 
     imageArray.push(file.path); 
    } 
}) 

我使用formidable来处理从我的iOS应用程序做出的node.js multipart请求,该请求通常包含数量“N”和相关的JSON对象,强大的中间件将JSON视为一个文件,并将文件存储在临时下载位置,并提供一个文件路径,代码“jsonObject = JSON.parse(fs.readFileSync(file.path,'utf8')); “读取文件并解析为JSON对象。这是它应该如何工作或是否有更好的方法,否定了从磁盘写入和读取多余的文件并直接提供解析的JSON obj。检索JSON对象

PS - newbie到node.js,heck新手到整个后端系统有一个非常糟糕的情况OCD。

+0

您如何发送请求?看起来你应该能够将JSON作为“字段类型”而不是“文件类型”来发送。 – mscdex 2014-10-26 16:14:31

+0

[body appendData:[@“Content-Type:application/json \ r \ n \ r \ n”dataUsingEncoding:NSUTF8StringEncoding]]; 我在请求中将content-type设置为application/json。 – 2014-10-27 01:28:16

+0

您是否还为每个部分添加了“Content-Disposition”标题? – mscdex 2014-10-27 02:23:09

回答

0

厉害(和几乎任何其它节点形式的解析模块)如果filenameContent-Disposition头值设定(或可能如果Content-Typeapplication/octet-stream)将只治疗特定部分为文件。