2015-01-30 9 views
7

Sto utilizzando node-request e sto provando a inviare un file a HDFS di IBM, come da this documentation.Qual è l'equivalente di curl --upload-file nella richiesta di nodo

Passando questo oggetto JSON per richiedere con successo del portfolio:

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

E di eseguire questo comando CURL carica sul successo di un file così:

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"

Tuttavia, cercando di specificare un flusso di file come so:

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

fallisce, e non so dove sbaglio. Come riprodurre l'argomento '--upload-file' da CURL usando node-request?

risposta

6

Ho lanciato un example on Github che funziona.

il succo è che avete bisogno di pipe il file in Richiesta:

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

Ancora non è sicuro come passare in un flusso di file come opzione nei params opzioni, ma questo farà per me!

- AGGIORNAMENTO -

Wow, mi sento come un idiota assoluto. L'opzione sarebbe file. Sì, è così semplice.

+0

Dove specificare un nome utente e una password per l'URL remoto? –

Problemi correlati