2014-10-26 171 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)將只治療特定部分爲文件。