2012-05-25 4 views
2

모바일 triggio 앱에서 nodejs 서비스로 파일을 게시하려고합니다. 요청은 post 메소드에 도달하지만 요청 오브젝트 obj에서 양식 오브젝트가 널 (null)이기 때문에 실패합니다. :이미지를 triggerio에서 express.js로 업로드하지 못합니다.

나는이 게시물에 허용 대답에서 코드를 적용했습니다 (형식 오류는 정의의 '완전한'방법을 호출 할 수 없습니다) : Uploading images using Node.js, Express, and Mongoose

이 내 현재 nodejs 코드 :

var express = require('express') 
    , form = require('connect-form'); 

var app = express.createServer(
    form({ keepExtensions: true }) 
); 

app.post('/fileupload', function(req, res, next){ 

    //req. form is nulL 
    req.form.complete(function(err, fields, files){ 
    if (err) { 
     next(err); 
    } else { 
     console.log('\nuploaded %s to %s' 
     , files.image.filename 
     , files.image.path); 
     res.redirect('back'); 
    } 
    }); 

    req.form.on('progress', function(bytesReceived, bytesExpected){ 
    var percent = (bytesReceived/bytesExpected * 100) | 0; 
    process.stdout.write('Uploading: %' + percent + '\r'); 
    }); 
}); 

app.listen(process.env.PORT); 
console.log("express started"); 

그리고 이것은 triggerio 내 업로드 방법 :

function uploadFile (file){ 
    forge.request.ajax({ 
     url: 'http://resttrigger.aykarsi.c9.io/fileupload', 
     type: 'POST', 
     files: [file], 
     fileUploadMethod: 'raw', 
     dataType: 'json', 
     success: function (data) { 
      forge.logging.log("success " + data); 
     }, 
     error: function (e) { 
      forge.logging.log("error " + e); 
     } 
    }); 
} 

답변

2

여기에 문제가있을 수 있습니다 fileUploadMethod: 'raw' 사용 : 그것은 t을 의미 hat 요청 본문은 노드 코드가 예상하는 multipart-encoded 형식이 아니라 단지 이진 Blob입니다.

exports.upload = function(req, res){ 
    var filename = '/tmp/' + new Date().getTime(); 

    console.log(JSON.stringify(req.files)); 

    // replace "test" with your actual form field name 
    fs.readFile(req.files["test"].path, function (err, data) { 
     fs.writeFile(filename, data, function (err) { 
      res.send({filename: filename}); 
     }); 
    }); 
}; 
: 참고로

, 여기 /tmp에 업로드 된 파일을 저장하는 최소한의 핸들러

관련 문제