微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 React Native 应用程序中使用 Axios 将图像和视频作为 blob 正确上传到 Azure 存储容器?

如何解决如何在 React Native 应用程序中使用 Axios 将图像和视频作为 blob 正确上传到 Azure 存储容器?

我正在开发一个 React Native 应用程序,我需要将图像或视频作为 blob 上传到 Azure 存储帐户。目前我正在上传图片,但我想在这个问题中添加视频,因为视频将是下一步。我尝试了很多方法将图像上传到 Azure 存储,但我无法使用 Axios 从 RN 应用程序正确上传图像。我正在使用 SAS 令牌生成上传 url,因此我可以从后端服务器与设备共享该 url,以便能够从设备上传图像或视频。我使用 Postman 来测试网址,一切都很好!使用 Postman 我可以将图像上传为二进制体。我使用了显示 Postman 代码示例的 Axios 代码生成,但我不确定 此处的文件内容 是什么意思。让我备份一下。

在这个 React Native 应用程序中,我使用 react-native-image-picker 从图库中选择图像并将路径传递给辅助类,我使用 react-native-fs 获取图像只是为了确保它存在和一切而且我还从 RNFS 获取base64 字符串。现在我有我想使用 Axios 上传到 Azure 服务器的图像路径和 base64 图像字符串。我尝试了几件事。一件事是来自邮递员的示例代码,但正如我所说,我不确定如何将文件内容作为示例代码显示的数据对象传递,

const axios = require('axios');
let data = '<file contents here>'; // <--- I don't kNow this

let config = {
  method: 'put',url: 'https://azure.blob.url/container/blob?sastoken=1234',headers: { 
    'x-ms-blob-type': 'BlockBlob','Content-Type': 'image/jpeg'
  },data : data
};

axios(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

我在网上找了答案,看看有没有人这样做过!好吧,我找到了很多示例代码,但它们都不适合我。我可能做错了什么,但我不知道是什么。我尝试的一种方法是使用 fetch(),将 base64 字符串和路径与 file:// 一起传递(目前专注于 Android 以使代码正常工作并将工作稍后在 iOS 部分,但如果代码示例/建议/帮助可以同时适用于 Android 和 iOS) 以不同方式获取 blob 并将其用作 Axios 中的数据对象,我将不胜感激,但它仍然无法正常工作!

我尝试的另一种选择是使用 RNFS.upload() 作为建议的 here。这对我的测试不起作用,因为它会因错误而失败,并且在 Github here 上创建了一个问题。对话中提到了一个修复程序,可以在 here 中找到。但它没有合并到 master 分支中,我不知道如何安装该补丁,而且我宁愿使用打过补丁的版本。

除了这些方法之外,我还尝试了 FormData() 和其他一些我目前没有代码示例的方法。所以我在这里通过发布我自己的问题来寻求帮助,希望能得到帮助,将来如果有人试图遵循类似的步骤,他们可以找到帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。