Кто-нибудь успешно использовал azure-storage для хранения больших двоичных объектов в проекте react native?

#react-native #azure-storage #azure-blob-storage

#react-native #azure-storage #azure-blob-storage

Вопрос:

https://www.npmjs.com/package/azure-storage

На основе этого проекта или, возможно, другого, кто-нибудь использовал какой-либо пакет JavaScript для загрузки в хранилище больших двоичных объектов Azure?

Я публикую здесь только потому, что мое исследование дало небольшие результаты, поэтому я подумал, что потенциальный разговор об отсутствии поддержки react native со стороны Azure может выявить некоторые обходные пути.

Я продолжу пробовать указанный пакет и в случае успеха предоставлю результаты, поэтому, как всегда, спасибо за любой ответ и направление, поскольку это всегда высоко ценится!

Редактировать: это выглядит интересно, хотя я не рассматривал это очень подробно:https://www.npmjs.com/package/azure-blob-storage

Комментарии:

1. Просто для пояснения: Вы ссылались на предложение, упомянутое в ссылке ниже: github.com/joltup/… Вы можете использовать клиентскую библиотеку Azure Storage JavaScript для прямой загрузки фотографии с клиента в Azure Storage: github.com/Azure/azure-storage-node/tree/master/browser . Смотрите пример здесь: github.com/Azure/azure-storage-node/blob/master/browser/samples /…

2. @SumanthMarigowda-MSFT — Кроме вашего первого предложения, все ваши предложения предназначены для браузера. есть ли у вас какая-либо помощь для React Native mobile. Спасибо

Ответ №1:

На случай, если кто-то пытается заставить его работать с другими решениями, предложенными здесь. Вот еще одно использование rn-fetch-blob . Это решение также позволяет сохранять большой двоичный объект с пользовательским именем, например, customBlobName

 import RNFetchBlob from "rn-fetch-blob";

const sasContainerUri = "https://accountname.blob.core.windows.net";

const container = "minecontainer";

const sasToken =
  "sv=2019-02-02amp;ss=bamp;srt=scoamp;sp=rwdlacamp;se=2020-05-30T22:48:22Zamp;st=2020-05-25T14:48:22Zamp;spr=httpsamp;sig=otherpartofSAStoken"; // you may need to play with other html verbs in this string e.g., `sp`, `ss` e.t.c.

const localUri = Constants.platform.ios
      ? file.uri.replace("file://", "/")
      : file.uri;

const assetPath = `${sasContainerUri}/${container}/${customBlobName}`;

    try {
      await RNFetchBlob.fetch(
        "PUT",
        `${assetPath}?${sasToken}`,
        {
          "x-ms-blob-type": "BlockBlob",
          "content-type": "application/octet-stream",
          "x-ms-blob-content-type": file.type
        },
        RNFetchBlob.wrap(localUri)
      );
    } catch (e) {
      console.log("Error at saving image into Azure Storage", e);
    }
  

Комментарии:

1. Я получаю ошибку аутентификации. Любой совет? Сервер не смог подтвердить подлинность запроса. Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись.

2. Ответ неполный и выдает ошибку «Серверу не удалось аутентифицировать запрос. Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись.»

Ответ №2:

Да, я использовал.

  const localUri = __IS_IOS ? file.uri.replace('file://', '') : file.uri;
 const assetPath = `${_trimEnd(sasContainerUri, '/')}/${container}/${uploadPath}`;

  await RNFetchBlob.fetch('PUT', `${assetPath}?${sasToken}`, {
    'x-ms-blob-type': 'BlockBlob',
    'content-type': 'application/octet-stream',
    'x-ms-blob-content-type': file.type,
  }, RNFetchBlob.wrap(localUri));

return assetPath
  

Комментарии:

1. Можете ли вы продемонстрировать более подробное решение? Я получаю сообщение «Этот запрос не авторизован для выполнения этой операции». ошибка.

2. Я получаю код ошибки 409, операция не разрешена в состоянии объекта. Любое решение для этого @Nikhil, заранее спасибо

3. Я немного опоздал, но я предполагаю, что последние два комментария связаны с неправильной настройкой токена SAS на портале Azure. Перейдите в контейнер> Настройки> Токены общего доступа > Создайте ключ учетной записи с нужными разрешениями. Затем вы получите требуемый токен Blob SAS.

Ответ №3:

 npm install react-native-azure-blob-storage --save
  

https://github.com/PosSoolutions/react-native-azure-blob-storage