gpt4 book ai didi

javascript - React Native 文件访问 api : blob. 数据在 android 上是 'undefined'

转载 作者:行者123 更新时间:2023-12-05 00:00:07 25 4
gpt4 key购买 nike

React native 现在支持 blob https://github.com/facebook/react-native/releases/tag/v0.54.0

我无法让它们在 Android 上运行。

axios({
method: 'GET',
url: imageUrl,
responseType: 'blob'
}, (res) => {
callback(URL.createObjectURL(res.data));
);
});

这就是我创建 blob 的方式。将响应类型设置为“blob”,然后使用 blob api 中的 URL.createObjectURL https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL制作一个指向 blob 的 uri。接下来,图像组件指向 blob uri 以显示图像,而无需穿过 RN Bridge/Message Queue。

这在 IOS 上完美运行,但在 Android 上我收到以下错误:

Cannot read property 'blobId' of undefined

单步执行 RN 代码,我发现它在 URL.js 的第 60 行

return `${BLOB_URL_PREFIX}${blob.data.blobId}?offset=${
blob.data.offset
}&size=${blob.size}`;

这是对 blob.data.blobId 的访问。在 IOS 中这是定义的,在 Android 中是未定义的。在 Android 上,blob 只有两个属性:

size:24671
type:"image/jpeg"

我已经将提供程序添加到我的 AndroidManifest.xml

 <provider
android:name="com.facebook.react.modules.blob.BlobProvider"
android:authorities="@string/blob_provider_authority"
android:exported="false"
/>

并适本地定义了字符串 blob_provider_authority。

我不想使用 https://github.com/joltup/rn-fetch-blob因为它可能会导致与 react-native 的 ^0.54 版本发生冲突,因为它们实现了类似的功能。我还预计 rn-fetch-blob 将停止维护,因为这将成为核心的 React Native 功能。

我已经尝试过的其他事情:

  • 删除设备上的应用,从头开始重建项目。
  • 将 responseType 更改为“image/png”(这实际上禁用了 blob)
  • 检查 res.data 实际上是 blob 对象

环境( react native 信息):

OS: macOS High Sierra 10.13.4
Node: 10.5.0
Yarn: 1.7.0
npm: 6.1.0
Watchman: 4.9.0
Xcode: Xcode 9.4.1 Build version 9F2000
Android Studio: 3.1 AI-173.4819257

Packages: (wanted => installed)
react: 16.3.1 => 16.3.1
react-native: 0.55.4 => 0.55.4

这里可能有一些线索:https://github.com/facebook/react-native/blob/5c2720b089dd0fb277771b0ac8b0e7788c493e5d/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.java

有没有人发现同样的问题并知道如何解决?

或者也许有人有能力阅读实现中的线索?

最佳答案

我自己用 https://github.com/joltup/rn-fetch-blob 解决了这个问题而不是 react native Blob 。 React native blob 似乎还没有准备好,到目前为止 rn-fetch-blob 工作并且可靠。

关于javascript - React Native 文件访问 api : blob. 数据在 android 上是 'undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52011426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com