2014-10-26 7 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 обрабатывать многослойный запрос в Node.js, сделанный из моего приложения IOS, запрос обычно содержит «п» количество изображений и связанный объект JSON , грозное промежуточное ПО рассматривает JSON как файл и сохраняет файл во временном месте загрузки и предоставляет путь к файлу, код «jsonObject = JSON.parse (fs.readFileSync (file.path, 'utf8')); " читает файл и анализирует его в объект JSON. Является ли это тем, как он должен работать или есть лучший способ, который отрицает лишний файл, записывает и читает с диска, и непосредственно анализирует JSON obj.Получение JSON объект из нескольких частей запроса в nodejs

PS - новичок в node.js, приветствуем новичков на всю бэкэнд-систему с очень плохим корпусом OCD.

+0

Как вы отправляете запрос? Похоже, вы должны отправлять JSON как «тип поля» вместо «типа файла». – mscdex

+0

[body appendData: [@ "Content-Type: application/json \ r \ n \ r \ n" dataUsingEncoding: NSUTF8StringEncoding]]; Я устанавливаю тип содержимого как application/json в запросе. –

+0

Вы также добавляете заголовки Content-Disposition для каждой части? – mscdex

ответ

0

Грозная (и довольно много других модулей формы узла синтаксического анализа) будет только относиться к определенной части в виде файла, если filename установлен в значение заголовка Content-Disposition (или, возможно, если Content-Type является application/octet-stream).