загрузить файл и метаданные в хранилище BLOB-объектов Azure с клиента Cordova - PullRequest
0 голосов
/ 21 ноября 2018

Я использовал этот пример для создания загрузки рабочего файла из моего клиента Cordova непосредственно в хранилище BLOB-объектов Azure: http://gauravmantri.com/2013/02/16/uploading-large-files-in-windows-azure-blob-storage-using-shared-access-signature-html-and-javascript/

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

Мартин

1 Ответ

0 голосов
/ 21 ноября 2018

Это на самом деле довольно просто.Когда вы фиксируете черный список, вы передаете пару ключ / значение метаданных как часть заголовков запроса.

Например, предположим, у вас есть 2 пары ключ / значение метаданных: key1/value1 и key2/value2.Вот как будет выглядеть код списка блокировки вашего коммита:

function commitBlockList() {
  var uri = submitUri + '&comp=blocklist';
  console.log(uri);
  var requestBody = '<?xml version="1.0" encoding="utf-8"?><BlockList>';
  for (var i = 0; i < blockIds.length; i++) {
      requestBody += '<Latest>' + blockIds[i] + '</Latest>';
  }
  requestBody += '</BlockList>';
  console.log(requestBody);
  $.ajax({
      url: uri,
      type: "PUT",
      data: requestBody,
      beforeSend: function (xhr) {
          xhr.setRequestHeader('x-ms-blob-content-type', selectedFile.type);
          xhr.setRequestHeader('Content-Length', requestBody.length);
          xhr.setRequestHeader('x-ms-meta-key1', 'value1');
          xhr.setRequestHeader('x-ms-meta-key2', 'value2');
      },
      success: function (data, status) {
          console.log(data);
          console.log(status);
      },
      error: function (xhr, desc, err) {
          console.log(desc);
          console.log(err);
      }
  });
}

Для справки см. Put Block List Документация REST API: https://docs.microsoft.com/en-us/rest/api/storageservices/Put-Block-List

...