【问题标题】:React Native, Spring REST: image served is not loading on the appReact Native,Spring REST:提供的图像未在应用程序上加载
【发布时间】: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 事件。我还尝试了onLoadStartonLoadEnd,它们都被触发了。
  • 另外,你是在模拟器还是手机上试试这个?你确定他们在同一个网络上?尝试在设备的浏览器上打开图像 URL。
  • 我正在设备上尝试,我确定它们在同一个网络上(我的应用程序的所有数据都是从这个 rest api 加载的)。我尝试了设备的浏览器,它也可以工作。这可能是格式问题吗?我尝试将图片编码为base64格式,但没有成功...感谢您的帮助
  • @Quentin Lerebours 我也有同样的问题,解决了吗?

标签: android image react-native loading spring-rest


【解决方案1】:

Android 模拟器与您的笔记本电脑在不同的网络上。

在 Android 设备上构建之前,请尝试在终端中运行 adb reverse tcp:8082 tcp:8082。这会将您的手机端口 8082 重定向到您的计算机端口 8082。您可以将 8082 更改为最适合您的任何数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-04
    • 2021-01-28
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 2018-04-01
    • 2020-10-24
    • 1970-01-01
    相关资源
    最近更新 更多