испарение.js не отправляет to_sign с мобильного устройства
Я работаю над приложением, в котором есть веб-компоненты и компоненты пользовательского интерфейса для мобильных устройств. Мы используем испарение.js для вызова конечной точки, которая будет возвращать предварительно подписанный URL-адрес для загрузки фрагментов в корзины aws. Эта концепция работает при использовании из реакции и отправляет параметр строки запроса to_sign для создания предварительно подписанного URL-адреса. По какой-то причине, когда этот код запускается из react native, значение строки запроса to_sign не передается в конечную точку. Что могло бы заблокировать передачу параметра to_sign из испарения, этот же код работает для приложения реакции? Вот код, который мы вызываем из react native:
const uploader = Evaporate.create({
signerUrl: config.SIGNER_URL,
aws_key: config.AWS_KEY,
bucket: config.BUCKET,
awsRegion: config.AWS_REGION,
cloudfront: true,
xhrWithCredentials: true,
computeContentMd5: true,
cryptoMd5Method: (d) => btoa(sparkMD5.ArrayBuffer.hash(d, true)),
cryptoHexEncodedHash256: sha256,
});
const uploadFile = (file, cb) => {
setLoading(true);
setUploadingError("");
let newName = uuidv4();
let extension = file.name.split(".");
uploader
.then((evaporate) => {
evaporate
.add({
file,
name: newName + "." + extension[2],
})
.then((res, err) => {
if (res) {
cb(res);
setLoading(false);
} else if (err) {
setUploadingError("Something went wrong");
setLoading(false);
}
});
})
.catch((err) => {
setUploadingError("Something went wrong");
setLoading(false);
});
};
1 ответ
Я сомневаюсь, что это потому, что btoa не работает в react-native. Поскольку react-native
использует другой движок js с браузером. Некоторый код js исполняется в браузере, но не в rn. Попробуйте реализовать btoa самостоятельно.
Есть аналогичный вопрос. React Native atob() / btoa() не работает без удаленной отладки JS