2015-01-30 12 views
7

में curl --upload-file के बराबर क्या है I node-request का उपयोग कर रहा हूं और this documentation के अनुसार, आईबीएम के एचडीएफएस में एक फाइल भेजने की कोशिश कर रहा हूं।नोड-अनुरोध

सफलतापूर्वक अनुरोध करने के लिए इस JSON ऑब्जेक्ट पासिंग अपलोड करता है:

var options = { 
     method: 'put', 
     body: 'foo', 
     headers: { 
      'Content-Type': 'application/octet-stream', 
      'Transfer-Encoding': 'chunked' 
     } 
    }; 

और यह कर्ल आदेश चलाकर सफलतापूर्वक के रूप में अच्छी तरह से एक फ़ाइल अपलोड करता है:

curl -v -X PUT -L -b cookie.jar "https://host:port/webhdfs/v1/tmp/myLargeFile.zip?op=CREATE&data=true" --header "Content-Type:application/octet-stream" --header "Transfer-Encoding:chunked" -T "file.txt"

हालांकि, की तरह एक फ़ाइल धारा निर्दिष्ट करने के लिए कोशिश कर रहा है इसलिए:

var options = { 
     method: 'put', 
     headers: { 
      'Content-Type': 'application/octet-stream', 
      'Transfer-Encoding': 'chunked' 
     }, 
     multipart : [ 
      { body: fs.createReadStream(localFile) } 
     ] 
    }; 

विफल रहता है, और मुझे नहीं पता कि मैं कहां गलत हो रहा हूं। मैं नोड-अनुरोध का उपयोग कर CURL से '--upload-file' तर्क कैसे पुन: उत्पन्न करूं?

उत्तर

6

मैंने एक example on Github काम किया जो काम करता है।

सार है कि आप पाइप के लिए अनुरोध में फ़ाइल की आवश्यकता है:

fs.createReadStream(filePath).pipe(request.put(putURL,options,function(err, httpsResponse, body){ 
    if (err) { 
     console.log('err', err); 
    } else { 
     console.log(body); 
    } 
})); 

फिर भी यकीन है कि विकल्प पैरामीटर में एक विकल्प के रूप में एक फ़ाइल धारा में पारित करने के लिए कैसे, लेकिन यह मेरे लिए क्या करेंगे नहीं!

- अद्यतन -

वाह, मैं एक पूर्ण मूर्ख की तरह लग रहा है। विकल्प file होगा। हाँ, यह इतना आसान है।

+0

आप दूरस्थ यूआरएल के लिए उपयोगकर्ता नाम और पासवर्ड कहां निर्दिष्ट करेंगे? –