我需要将本地图像资源发布到应用程序的后端,并且我在 Android 上的发布模式下遇到了问题(iOS 调试/发布和 Android 调试工作没有问题)。
要获取资产的 uri,我只需这样做:
const img = require('imagePath');
...
const uri = Image.resolveAssetSource(img).uri;
当我使用上述内容作为图像的 URI 源时,它在所有情况下都有效(甚至 Android 发布模式)。
当我使用上述内容来获取要添加的 URI 以形成后期 API 调用的数据时,它工作正常,但在 Android 发布模式下除外,在该模式下,它会失败并出现通用 500 网络错误,而不会触及后端。
我看到的这些场景之间的唯一区别是,我在 iOS 调试/发布和 Android 调试中获得的 URI 都是绝对的,而我在 Android 发布模式下获得的 URI 是相对的。
有没有办法在Android发布模式下获取本地图像资源的绝对URI而不是相对URI?
这对我有用:
var imagename="your file name in assets";
const {default: exampleImage } = await import('../screens/assets/'+imagename);
const exampleImageUri = Image.resolveAssetSource(exampleImage).uri
formdata.append("file", {
uri: exampleImageUri,
name: imagename,
type: 'image/png',
});
const myHeaders = new Headers();
myHeaders.append("Content-Type", "multipart/form-data");
var url="your api end point";
const requestOptions = {
method: "POST",
headers: myHeaders,
body: formdata,
redirect: "follow"
};
fetch(url, requestOptions)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.error(error));