Javascript 将流上载到azure blob存储

Javascript 将流上载到azure blob存储,javascript,node.js,stream,azure-storage,azure-blob-storage,Javascript,Node.js,Stream,Azure Storage,Azure Blob Storage,我会上传一个音频文件到azure blob存储。 首先,我向url发出http请求以获取文件 然后我会“直接”将它保存到azure blob存储中,而无需将其存储在服务器中,然后将其上载 这是我的密码: request .get(url, { auth: { bearer: token } }) .on("response", async function(response) { const res = await blobService.crea

我会上传一个音频文件到azure blob存储。 首先,我向url发出http请求以获取文件

然后我会“直接”将它保存到azure blob存储中,而无需将其存储在服务器中,然后将其上载

这是我的密码:

request
  .get(url, {
    auth: {
      bearer: token
    }
  })
  .on("response", async function(response) {
    const res = await blobService.createAppendBlobFromStream(
      "recordings", // container name
      "record.wav",
      response, // should be stream
      177777, // stream length
      function(err, res) {
        try {
          console.log(res);
        } catch (err) {
          console.log(err);
        }
      }
    );
  });
实际上,当我上传blob存储中的文件并检查我的数据库时,我得到一个空文件,里面没有数据,我认为我没有正确地发送数据流

我期望的是在blob存储中获取音频文件,其中包含从
get
请求中获取的数据


我还应该指定流长度,但我不知道如何获得它,我输入了一个随机数,但它应该是正确的流长度。我已经检查了
response
对象,但我没有找到该信息。

我认为您不能直接上载文件,因此首先在blob存储中创建一个文件夹,然后创建一个文件。 读取选定的文件数据,并使用文件流或其他方式将其写入创建的文件中

这是上传文件的代码

 app.post('/upload',function(req,res){
 if(req.files.fileInput){
 var file = req.files.fileInput,
 name = file.name,
 type = file.mimetype;
 var uploadpath = __dirname + '/uploads/' + name;
 file.mv(uploadpath,function(err){
  if(err){res.send("Error Occured!")}
  else {res.send('Done! Uploading files')}
  });
}
  else {
  res.send("No File selected !");
  res.end();
};
})

正在发生的事与你期望发生的事?任何错误?如果服务器使用
response.headers['content-length']
发送响应,您应该能够从响应中获得正确的流长度。试试看。你确定你发送的请求(你想从中向Azure发送数据)确实返回了一些东西吗?尝试将流传输到一个文件(在您的计算机上),并查看其是否完整。是的,我已经将其传输到文件中,并且获得了包含数据的音频文件(录制的语音)有任何错误吗?您是否尝试过设置正确的大小(请参阅我的评论)?您是否尝试过使用磁盘上的文件(而不是响应文件)执行此操作?