开发中,android端某一界面需要显示图片,后台应该怎么提供接口给他它,是返回图片地址吗?还是返回图片的文件流?

新手上路,请多包涵

问题:我是java后台编程人员,负责提供接口给APP端调用。现在app端某一个界面需要展现一些图片,而这些图片以字节数组(二进制)保存在数据库中,那我应该怎么提供接口给app端?返回图片的字节数组,让android自己去转化成图片吗?希望那些给app端写过接口的大神给点建议,万分感谢!

阅读 4.7k
2 个回答

为什么会在数据库存文件的二进制内容?
那前台传个几十M的过来不得干趴下?
解决方案嘛,base64之后返回。或者用页面路由 直接显示二进制内容在返回 header里面声明content-type

折腾吧……
  1. 定义图片请求URL,可以考虑自定义图片访问路径,然后再拼接图片在数据库中的ID,最后补全图片类型(JPG/PNG),e.g. http://192.168.1.1/image/1.jpg
  2. 后端接口接收到客户端请求后,如果符合上述URL格式,那么先解析图片ID,然后从数据库中获取到二进制图片数据,然后返回一份数据结构和直接访问http-image文件一样的数据给客户端;
  3. 图片请求URL最好是保证唯一,且已补全后缀名,这样方便客户端处理,e.g.缓存图片数据。

示例:http://img.dongcoder.com/up/i...
clipboard.png

HTTP请求数据如下:

HTTP/1.1 200 OK
Date: Mon, 21 Jan 2019 01:40:13 GMT
Content-Type: image/png
Content-Length: 32657
Accept-Ranges: bytes
Vary: Accept-Encoding

ÿØÿàJFIF``ÿÛC

这里只展示开始的数据,在抓包工具里还能看到更多数据……

这就是一份标准的http-image数据。注意Content-Type: image/pngJFIF。接下来就自行百度http协议吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题