Как отправить большой двоичный объект в хранилище больших двоичных объектов Azure с помощью службы больших двоичных объектов Azure

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

Для записи звука я использую код, подобный приведенному ниже

let recordedBlobs = [];
this.mediaRecorder = new MediaRecorder(window.stream, { mimeType: 'audio/webm' });
this.mediaRecorder.ondataavailable = event => recordedBlobs.push(event.data);
this.mediaRecorder.start(10);

Затем моя функция остановки создает Blob-объект и пытается загрузить его в Azure.

this.mediaRecorder.stop();
const blob = new Blob(recordedBlobs);
const blobService = azure.createBlobServiceWithSas(myFileUri, mysasToken);
const speedSummary = blobService.createBlockBlobFromBrowserFile(container, path, blob, { blockSize });

Все это отлично работает на другой странице, где пользователь загружает файл, но не для аудио, загруженного с помощью MediaRecorder.

Есть идеи, где я ошибаюсь?

Спасибо


person Tree Frog    schedule 11.06.2019    source источник


Ответы (1)


createBlockBlobFromBrowserFile ожидает File объект. Что вам нужно сделать, так это создать его, используя записанные биты. Попробуйте что-нибудь вроде следующего:

const blob = new Blob(recordedBlobs, {type: 'audio/webm'});
const file = new File([blob], "mytest.webm", {type: 'audio/webm'});
const blobService = azure.createBlobServiceWithSas(myFileUri, mysasToken);
const speedSummary = blobService.createBlockBlobFromBrowserFile(container, path, file, { blockSize });         

Я попробовал приведенный выше код и смог загрузить большой двоичный объект.

person Gaurav Mantri    schedule 11.06.2019