2016-06-14 5 views
0

두 개의 노드 서버가 있습니다. 하나는 파일 및 다른 전송 파일을 읽으려고합니다. 서버가 파일을 찾을 수 결코 그러나 내 서버는multer가 내 게시물 요청에있는 파일을 볼 수없는 이유는 무엇입니까?

var http = require('request-promise'); 
    var request = require('request'); 
    var fs = require('fs'); 
    var FormData = require('form-data'); 

    var form = new FormData(); 

    tests.forEach(function(testName){ 
    form.append('test', fs.createReadStream(__dirname+'/tests/'+testName)); 
    }); 

    var options = { 
     method: 'POST', 
     uri: 'https://' + name +'/rest/api', 
     rejectUnauthorized: false, 
     timeout: 2000, 
     form: form, 
    }; 

    return http(options); 

처럼

.post(upload.array('test'), function (req, res) { 

    if (!Array.isArray(req.files)) { 
    res.status(400).json({success: false, err: 'Must have test(s))'}); 
    return; 
    } 

    var files = req.files; <-- This is always null 

내 고객의 모양처럼 설정되어 있습니다. 응답은 항상 오류를 말합니다 : 반드시 시험을 받아야합니다.

내 클라이언트에서 내가 뭘 잘못하고 있는지 알아낼 수있는 사람이 있습니까?

답변

1

form 옵션은 urlencoded 형식입니다. 다중 파트 양식의 경우 formData 옵션을 대신 설정해야합니다. 또한 명시 적으로 form-data 모듈을 사용할 필요가 없습니다. 예 :

var requestPromise = require('request-promise'); 
var fs = require('fs'); 

var formTests = new Array(tests.length); 
for (var i = 0; i < tests.length; ++i) 
    formTests[i] = fs.createReadStream(__dirname + '/tests/' + tests[i]); 

var options = { 
    method: 'POST', 
    uri: 'https://' + name +'/rest/api', 
    rejectUnauthorized: false, 
    timeout: 2000, 
    formData: { 
    tests: formTests 
    } 
}; 

return requestPromise(options); 
+0

올바른 방향으로 나를 보내 주셔서 감사합니다! 왜 내가 formData로 양식을 전환 할 때 (당신처럼) [TypeError : hasOwnProperty 'hasOwnProperty'undefined] 예외를 읽을 수 있습니까? – nbroeking

+0

'request' 모듈을 직접 사용하여 동일한 오류가 발생합니까? 설치된'request' /'request-promise' 버전은 무엇입니까? – mscdex

관련 문제