如何在'request'模块的节点上写入curl'PUT'请求

我有这个curl请求工作。

curl -v "https://developer.api.autodesk.com/oss/v2/buckets/:bucketName/objects/" -X "PUT" -H "Authorization: Bearer tokenGoesHere" -H "Content-Type: application/octet-stream" -T "forupload.rvt" 

我怎样才能用npm请求模块在节点上写这个呢? 我尝试了下面的'request'和'fs'。 我回来了“请求中没有提供令牌”。

  function uploadFile(bucketData){ var uri = 'https://developer.api.autodesk.com/oss/v2/buckets/' + bucketData['bucketKey'] + '/objects/' var authorizationHeader = ' Bearer ' + bucketData['token'] // this works in other post/get requests var contentTypeHeader = 'application/octet-stream' var streamTarget = 'C:\\Users\\architech\\Desktop\\Forge Node\\Test.rvt'; console.log(uri) console.log(authorizationHeader) console.log(contentTypeHeader) console.log(streamTarget) // console output: // https://developer.api.autodesk.com/oss/v2/buckets/bucketpqglrzt/objects/ // Bearer ....token.... // application/octet-stream // C:\Users\architech\Desktop\Forge Node\Test.rvt request.put( { url: uri, // preambleCRLF: true, // postambleCRLF: true, multipart: [ { 'Authorization': authorizationHeader, 'Content-Type': contentTypeHeader, body: fs.createReadStream(streamTarget) }, ] }, function(error, response, body){ if(!error){ console.log(body); }else{ console.log(error); } }) } 

尝试了几种方法后,虽然我不能重现您的具体问题,我遇到的麻烦是二进制附件加载正常。 因为createReadStream()asynchronous运行,所以在添加到multipartformData键时,它看起来并不像请求文档所说的那样工作。 不知道这是为什么?

我首先使用http://requestb.in工作 – 将curl请求与Node构build的相同请求进行比较。 这是最后的工作版本:

 var request = require('request') fs = require('fs') var options = { uri: 'https://developer.api.autodesk.com/oss/v2/buckets/<yourBucket>/objects/<yourFile.ext>', headers: { 'Content-Type': 'application/octet-stream', 'Authorization': 'Bearer <token>' } } fs.createReadStream(__dirname + '/<fileName.ext>').pipe(request.put(options, function(err, response, body) { console.log(body) /* { "bucketKey" : "< yourBucket>", "objectId" : "urn:adsk.objects:os.object:brandontestbucket2/skyscpr1.3ds", "objectKey" : "<fileName.ext>", "sha1" : "...redacted...", "size" : 43791, "contentType" : "application/octet-stream", "location" : "https://developer.api.autodesk.com/oss/v2/buckets/< yourBucket>/objects/<fileName.ext>" } */ })) 
Interesting Posts