URL.createObjectURL 在 react-native 中不起作用,是否有创建 url 的替代方法?

lku*_*m11 6 react-native

我正在尝试在 react-native 应用程序中显示 pdf 文件。

这是我的代码:从 api 获取 blob:

Blob {
  "_data": Object {
    "blobId": "85225e45-7f45-463b-bd62-a9170551a3b7",
    "lastModified": undefined,
    "offset": 0,
    "size": 3028,
    "type": "application/pdf",
  },
}
Run Code Online (Sandbox Code Playgroud)

注意:转换为 base64Data 后,我可以渲染图像,但不能渲染 pdf 文件。

const fileReaderInstance = new FileReader();
fileReaderInstance.readAsDataURL(response.data);
fileReaderInstance.onload = () => {
    base64data = fileReaderInstance.result;
     dispatch({
            type: OPEN_DOCUMENT, url: base64data 
        });
}
Run Code Online (Sandbox Code Playgroud)

并在渲染中

<WebView 
   source={{ uri: url }} 
   originWhitelist={['*']}
 />
Run Code Online (Sandbox Code Playgroud)

(适用于图像)

<Image source={{uri: url}} style={{ height: 400, width: 300, }} />
Run Code Online (Sandbox Code Playgroud)

小智 0

URL.createObjectURL 函数在 React Native 中不可用,因为 React Native 不像传统 Web 应用程序那样使用浏览器环境。相反,它使用 JavaScript 和本机组件的组合来呈现用户界面。

在 React Native 中,您通常直接使用本地图像文件或远程 URL,而不是创建对象 URL。

另一种方法是直接将它们转换为base64,因为您已经尝试过成功。此外,虽然 base64 编码可用于图像和 PDF,但显示和渲染它们的方法可能有所不同。Base64 编码的图像可以使用 Image 组件直接渲染,而渲染 PDF 通常需要专门为在 React Native 中处理 PDF 渲染而设计的额外库。