node-request中的curl –upload-file相当于什么
我正在使用节点请求,并尝试将文件发送到IBM的HDFS,根据本文档 。
传递这个JSON对象来请求成功上传:
var options = { method: 'put', body: 'foo', headers: { 'Content-Type': 'application/octet-stream', 'Transfer-Encoding': 'chunked' } };
运行这个CURL命令也成功的上传了一个文件:
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"
但是,试图指定一个文件stream如下所示:
var options = { method: 'put', headers: { 'Content-Type': 'application/octet-stream', 'Transfer-Encoding': 'chunked' }, multipart : [ { body: fs.createReadStream(localFile) } ] };
失败了,我不知道我要去哪里错了。 如何使用节点请求从CURL复制'–upload-file'参数?
我在Github上举了一个例子 。
要点是你需要将文件传送到请求:
fs.createReadStream(filePath).pipe(request.put(putURL,options,function(err, httpsResponse, body){ if ( err ) { console.log('err', err); } else { console.log(body); } }));
仍然不知道如何传递一个文件stream作为一个选项的选项参数,但这将为我做!
– 更新 –
哇,我觉得自己是一个绝对白痴。 该选项将是file
。 是的,这很简单。