在ios上使用XMLHttpRequest获取本地路径uri时出现随机网络请求失败错误



最近,当使用XMLHttpRequest将路径uri转换为Blob时,我在带有React Native的IOS上遇到了一个奇怪的问题。它给出一个随机网络请求错误。所以有时它有效,有时不在同一网络上。该错误仅发生在物理IOS设备上(Android工作正常(,而不是发生在我计算机上的IOS模拟器上。

我正在使用 React Native:0.61.5 和 iOS 13。该代码适用于IOS 12设备。

法典:

export function urlToBlob(url) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.onerror = function() {
reject(new Error('uriToBlob failed'));
};
xhr.onreadystatechange = () => {
if (xhr.readyState === 4) {
resolve(xhr.response);
}
};
xhr.open('GET', url);
xhr.responseType = 'blob'; // convert type
xhr.send();
});
}   

我还尝试了反应本机获取,这给出了相同的问题。

Info.pl 列表

<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>

我不知道这是否可能,但解决方案可能是在没有 http 请求的情况下解决获取并将路径 uri 转换为 blob。

在调试并阅读大量文档后,我终于得到了解决方案。我注意到引用图像(通过拍照或打开文件产生的(的 uri 不再正确。使用该 uri 生成 blob 时,它会给出错误。因为XMLHttpReques的错误处理非常差,所以它只给了我一个网络请求失败的错误。因此,我为解决错误所做的是在生成 uri 后立即从 uri 生成一个 blob。我认为错误的原因是也许更高版本的 IOS 12/13 处理了 uri 引用与以前版本不同的缓存。

最新更新