【发布时间】:2019-01-02 23:15:41
【问题描述】:
我正在使用 React Native 构建一个 Android 应用程序。我有一个 Spring REST 后端,它提供应用用户上传的图片。
这是我用来提供图片的代码:
@RequestMapping(value = "/user/{id}/picture", method = RequestMethod.GET, produces = "image/jpg")
@ResponseBody
public byte[] getProfilePictureJpg(@PathVariable int id) {
User user = userRepository.findOneById(id);
byte[] imageData;
String path = user.getPicturePath();
try {
BufferedImage image = ImageIO.read(new File(path));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", baos);
imageData = baos.toByteArray();
return imageData;
} catch (IOException e) {
log.error("File not found");
return null;
}
}
当我在浏览器上加载图像时,它正在工作: Browser loading picture
问题是当我在 React 上尝试使用相同的 url 时,图片没有加载:
<Image source={{ uri: 'http://192.168.0.15:8082/user/1/picture'}} style={{width: 300, height: 300}}/>
当然,我尝试了另一张图片,效果很好:
<Image source={{ uri: 'https://facebook.github.io/react/img/logo_og.png'}} style={{width: 300, height: 300}}/>
我读到 iOS 需要使用 HTTPS 保护图像源,但对于 Android 则不需要。
希望有人能帮助我... 谢谢
【问题讨论】:
-
你可以尝试监听
onError事件,看看你从那里得到了什么信息,或者prefech方法。 -
感谢您的回答。我试过了,似乎没有触发
onError事件。我还尝试了onLoadStart和onLoadEnd,它们都被触发了。 -
另外,你是在模拟器还是手机上试试这个?你确定他们在同一个网络上?尝试在设备的浏览器上打开图像 URL。
-
我正在设备上尝试,我确定它们在同一个网络上(我的应用程序的所有数据都是从这个 rest api 加载的)。我尝试了设备的浏览器,它也可以工作。这可能是格式问题吗?我尝试将图片编码为base64格式,但没有成功...感谢您的帮助
-
@Quentin Lerebours 我也有同样的问题,解决了吗?
标签: android image react-native loading spring-rest