Arhn - архитектура программирования

Сохранить / загрузить видеофайл с локального диска в хранилище BLOB-объектов Azure через API?

В настоящее время я использую этот код, чтобы выбрать видеофайл с локального диска (с помощью веб-страницы) и отправить его на свой api:

    <form enctype="multipart/form-data">
    <input name="file" type="file" accept="video/*"/>
    <input type="button" value="Upload" />
</form>
<progress></progress>

<script language="javascript" type="text/javascript">
$(document).ready(function(){

$(':file').on('change', function () {
  var file = this.files[0];

    if (file.type !== "video/mp4" && file.type!== "video/quicktime") {
        alert("Content must be video .mp4 or .mov")
    }

$(':button').on('click', function () {
    if (file.type == "video/mp4" || file.type == "video/quicktime"){
  $.ajax({
    // Your server script to process the upload
    url: 'azureAPI',
    type: 'POST',

    // Form data
    data: new FormData($('form')[0]),

    // Tell jQuery not to process data or worry about content-type
    // You *must* include these options!
    cache: false,
    contentType: false,
    processData: false,

    // Custom XMLHttpRequest
    xhr: function () {
      var myXhr = $.ajaxSettings.xhr();
      if (myXhr.upload) {
        // For handling the progress of the upload
        myXhr.upload.addEventListener('progress', function (e) {
          if (e.lengthComputable) {
            $('progress').attr({
              value: e.loaded,
              max: e.total,
            });
          }
        }, false);
      }
      return myXhr;
    }
  });
} else {
    alert ("File type must be .mp4 or .mov")
}
});
});
});
</script>

Это отправляет (что я предполагаю) двоичные данные в виде этого:

���
1!QAa"q2B���R�#3br��u�����S6C$%��5�cts�T&D4��U��d���e!1AQa2"q�#����3��B���X"��?��!=��W�u�ٗ�-2���?����ۯ�Կ�i���t����M���Y�-��-Vdϊ�P�<�<U#TY]K��dW
���

Я считаю, что это включает границу веб-формы и т. Д.

Сейчас я пытаюсь сохранить эти двоичные данные в блочном большом двоичном объекте, однако у меня возникают проблемы с сохранением двоичных данных в блочный большой двоичный объект Azure, используя:

var buf = Buffer.from(req.body, 'binary');
blobService.createBlockBlobFromText(container, 'fileName.mp4', buf, {contentSettings: {contentType: 'video/mp4', contentEncoding: 'binary'}}, function (error, result, response) {
    if(!error){
        callback('uploaded');
    } else {
        callback('nope');
    }

});

Я также попытался создать читаемый поток:

var container = 'abc';
var azure = require('azure-storage');
const getStream = require('into-stream');
var blobService = azure.createBlobService();

module.exports = function (context, req) {
    var json = req.body;
    save (context, json, function(result){
        context.log(result);
        context.done();
    })
}

function save (context, json, callback){
var buf = Buffer.from(json); 
var stream = getStream(buf); 
var streamLength = buf.length; 
blobService.createBlockBlobFromStream(container, 'fileName.mp4', stream, streamLength, {contentSettings: {contentType: 'video/mp4'}}, function (error, result, response) { 
    if(!error) { 
        callback('uploaded'); 
        } else { 
            callback('nope'); 
            } 
            });

}

Я попробовал это, сначала без contentSettings, но это сохранило данные как contentType: application / octet-stream, которые не открывались как видео. Затем я добавил contentType и, наконец, попытался добавить contentEncoding.

Это сохранило правильный contentType, но видео все равно не удалось открыть.

Кто-нибудь знает, как сохранить двоичные данные в хранилище BLOB-объектов Azure с помощью этого метода? Вроде сохраняет файл, но при попытке открыть он поврежден / некорректно закодирован? Я не уверен в этом вопросе. Возможно, мне нужно удалить из него данные о границе webkitform и т. Д. Перед сохранением?

Спасибо за любые указатели, извинения, если я что-то упустил.


  • Есть ли у вас другие проблемы? 07.02.2020
  • Мне еще не удалось заставить его работать, но я просто подумал, что, возможно, мне нужно ограничение размера файла на стороне клиента или изменение размера / компрессор, поэтому я не получаю много ГБ данных, загружаемых каждый раз, не уверен, возможно ли это ? 07.02.2020
  • Ваш видео файл очень большой? 08.02.2020
  • Он может быть разным, но сейчас моя главная проблема - это возможность его загрузить. 08.02.2020

Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..