2015-01-30 25 views
7

curl --upload dosyasının karşılığı nedir? node-request kullanıyorum ve IBM'in HDFS'sine this documentation uyarınca bir dosya göndermeye çalışıyorum. Başarıyla istemek için bu JSON nesnesi GeçmeDüğüm isteğinde

yükler:

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

Ve bu CURL komutu çalıştırarak başarılı yanı bir dosya yükler:

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"

Ancak böyle bir dosya akışı belirtmek için çalışıyor öyleyse:

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

başarısız ve nerede yanlış gittiğimi bilmiyorum. Düğüm-isteği kullanarak CURL'den '-upload-file' argümanını nasıl yeniden üretebilirim?

cevap

6

Çalıştığım bir example on Github'u kustum.

özü Request içine boru dosyayı gerektiğidir:

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

seçenekleri params bir seçenek olarak bir dosya akışında geçmesine ama bu benim için yapacak kadar emin değildi!

- GÜNCELLEME -

Wow, mutlak bir aptal gibi hissediyorum. Bu seçenek file olacaktır. Evet, bu kadar basit.

+0

Uzak URL için bir kullanıcı adı ve parola nerede belirlersiniz? –