反应本机图像获取/上传

Posted

技术标签:

【中文标题】反应本机图像获取/上传【英文标题】:React Native Image Fetch/Upload 【发布时间】:2019-02-05 15:28:48 【问题描述】:

问题陈述:

我正在将图像 uri base64 从我的 react-native 应用程序上传到我的 java 后端服务器。我的后端将 URI 字符串转换为字节数组并将其存储在 mysql 数据库中(带有 BLOB)。到目前为止一切都很好!但是当我从数据库中读取/获取图像时,我会将它们转换回 base64 图像 uri 字符串,以将它们显示给用户(使用我的 Rest api 获取)。问题是,我的 Rest API (GET) 可以处理 2-3 张图像,然后内存不足......我该怎么办?这是因为 base64 uri 字符串对于 Rest API 来说显然太长了......

有什么解决办法吗?

【问题讨论】:

【参考方案1】:

在您的后端,您应该将图像存储为文件,而不是字节数组。使用this之类的东西将b64转换为java中的文件(我个人不知道该怎么做)

完成此操作后,您的后端必须向您返回文件的 url,以便您可以使用来自 react-nativeImage 组件在您的应用中显示它。

【讨论】:

但是如何将它存储在数据库中?我将它作为字节数组存储在 MySQL 中,然后当我想要取回它时返回到文件中?但是我不能用图像返回数据(在 Rest 中),因为它是来自 Rest API 的类似 JSON 的输出。数据是来自用户的帖子,所以我必须返回。其他的反应原生? 将其存储到后端的文件中,保存路径并将其转换为 url。然后,将 URL 保存在您的数据库中。在 json 中,发送对您有意义的数据并添加一个字段 url_image ,它是您数据库中的文件 url。您将不得不主要在后端进行返工。我不能帮你写代码。

以上是关于反应本机图像获取/上传的主要内容,如果未能解决你的问题,请参考以下文章

减小图像大小后如何将图像上传到firebase反应本机

网络请求失败对 https 图像上传 Android 做出本机反应

通过 aws Amplify 使用 Storage 类对本机图像上传进行反应

使用阿波罗客户端上传图像时获取网络请求失败反应原生android

我想在本机反应中获取数据到文本

如何在本机反应中制作javascript图像blob对象?