#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