2015-01-30 8 views
7

Używam node-request i próbuję wysłać plik do HDFS IBM, zgodnie z this documentation.Jaki jest odpowiednik zwijania --upload-file w żądaniu węzła

Przechodząc ten obiekt JSON do żądania powodzeniem przesyła:

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

i uruchamianie tego polecenia CURL powodzeniem przesyła plik, a także:

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"

Jednakże, próbując określić plik strumienia jak więc:

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

zawodzi, a ja nie wiem, gdzie idę źle. Jak odtwarzam argument "--upload-file" z CURL za pomocą żądania node-node?

Odpowiedz

6

Podałem example on Github, który działa.

Istotą jest to, że trzeba rury plik na żądanie:

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

Nadal nie wiesz jak przejść w strumieniu pliku jako opcja w opcjach params ale będzie to dla mnie zrobić!

- AKTUALIZACJA -

Wow, czuję się jak idiota bezwzględną. Opcją będzie file. Tak, to takie proste.

+0

Gdzie podać nazwę użytkownika i hasło do zdalnego adresu URL? –

Powiązane problemy