Загрузить поток в хранилище BLOB-объектов Azure - PullRequest
0 голосов
/ 28 декабря 2018

Я хотел бы загрузить аудиофайл в хранилище BLOB-объектов Azure.Сначала я делаю http-запрос к URL, чтобы получить файл.

Затем я бы "напрямую" сохранял его в хранилище BLOB-объектов Azure без необходимости сохранять его на сервере, а затем загружал его.

Вотмой код:

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 объект, но я не нашел эту информацию.

1 Ответ

0 голосов
/ 28 декабря 2018

Я думаю, что вы не можете загрузить файл напрямую, поэтому сначала создайте папку в хранилище больших двоичных объектов, а затем создайте файл.Прочитайте данные выбранного файла и запишите его в созданный файл, используя файловый поток или другое.

здесь код загружаемого файла,

 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();
};
})
...