文章目录
- 前言
- 图片渲染到前端
- 向前端一次返回多张Base64图片
前言
当我们从服务器读取的图片链接返回给前端,前端可以很轻松的下载和展示,但是对于临时文件,我们不需要保存到服务器,比如PPT转图片,PDF转图片等等,我们需要直接返回给前端,对于一张图片可以使用flush()渲染到前端,多张图片可以把图片编码成Base64,并存储到数组中。
图片渲染到前端
/**
* 文件字节流渲染前端
*
* @param is 输入流
* @param response 响应
*/
private static void flush(InputStream is, HttpServletResponse response) {
try (ServletOutputStream out = response.getOutputStream()) {
byte[] buff = new byte[1024];
int length = 0;
while ((length = is.read(buff)) > 0) {
out.write(buff, 0, length);
}
IOUtils.closeQuietly(is);
out.close();
out.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
返回结果示例:
向前端一次返回多张Base64图片
1、将图片用for循环从内存读出
2、将图片编码成Base64,并存储到数组ArrayList中
3、返回给前端编码好的图片,前端代码依次解析即可
List<String> base64Images = new ArrayList<>();
for (byte[] image : images) {
String base64str = Base64.encodeBase64String(image);
base64Images.add("data:image/png;base64," + base64str);
}
返回结果示例: