1.得到服务器的图像byte[] 以byte[]传输
2.得到服务器的图像byte[] 通过base64编码
3.得到服务器的图像静态地址获取资源
/**
* 根据绝对文件地址 获取文件的字节数据
*
* @param url
* @return
*/
private final byte[] findFileByteArrayByPath(String url) {
byte[] buffer = null;
try {
final File file = new File(url);
final FileInputStream fis = new FileInputStream(file);
final ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
final byte[] b = new byte[1000];
int n;
while ((n = fis.read(b)) != -1) {
bos.write(b, 0, n);
}
fis.close();
bos.close();
buffer = bos.toByteArray();
} catch (FileNotFoundException e) {
log.error(e.getMessage());
} catch (IOException e) {
log.error(e.getMessage());
}
return buffer;
}
@Override
public List<Attention> findAttentionsByUserId(String username, HttpServletRequest request) {
// 根据用户名获取用户对象
final User user = this.userService.findUserByLoginName(username);
// 根据用户id获取关注列表
final List<Attention> attentions = this.attentionMapper.getAttentionsByUserId(user.getId());
final int count = attentions.size();
//byte[] buffer = null;
//final String base64coding = "data:image/jpg;base64,";
final String httpSourcesPath = "http://xxx.xxx.com/";
// 获取服务器的绝对地址 根目录
//final String path = request.getSession().getServletContext().getRealPath("/").concat("/");
int i = 0;
for (; i < count; i++) {
/*
* ios 通过获取base64 完成图像解析 ,根据绝对文件地址 获取文件的字节数据
*/
/*
* buffer =
* this.findFileByteArrayByPath(path.concat(attentions.get(i).
* getUserHeadUrl()));
*/
// 将文件byte[]编码为base64字符 并赋值
/*
* attentions.get(i).setBase64UserHeadUrl(base64coding.concat(Base64
* .byteArrayToBase64(buffer)));
*/
// ios 的另一种方式 通过http地址访问静态资源
attentions.get(i).setUserHeadUrl(httpSourcesPath.concat(attentions.get(i).getUserHeadUrl()));
}
return attentions;
}
java server 传输给 ios 图像数据的三种方式
最新推荐文章于 2021-08-10 20:18:01 发布