首先idea建立一个demo工程, 写一个controller模拟base64输出图片
我习惯使用start.aliyun.com
默认直接next
选web即可
点击finish创建好demo工程了
目录结构
主要代码:
pom.xml 因为使用了hutool工具读取txt文件,所以dependency引入hutool-all, 实际应用按需引入(不过hutool是我所有项目必用工具包[呲牙])
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.5.8</version></dependency>
base64.txt , 存放测试用的base64字符串, 实际应用存在数据库中, 从数据库中获取.
base64.txt 测试文件, 可以站长助手在线生成一个
PicController.java 代码
package com.example.demo.controller;import cn.hutool.core.io.file.FileReader;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import sun.misc.BASE64Decoder;import javax.servlet.http.HttpServletResponse;import java.io.*;@Controllerpublic class PicController { @RequestMapping("/getPic") public void getPic(HttpServletResponse response) throws IOException { FileReader fileReader = new FileReader("base64.txt"); String base64 = fileReader.readString().replace("data:image/jpeg;base64,",""); // 以上获取base64方式改为自己的逻辑代码, 记得 .replace("data:image/jpeg;base64,",""), 否则解析成图片失败 BASE64Decoder decoder = new BASE64Decoder(); byte[] bytes = decoder.decodeBuffer(base64); for (int i = 0; i < bytes.length; ++i) { if (bytes
< 0) {// 调整异常数据 bytes += 256; } } //输出图片 response.setContentType("image/jpeg"); response.setDateHeader("expries", -1); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Pragma", "no-cache"); OutputStream out = response.getOutputStream(); out.write(bytes); out.flush(); out.close(); }}
启动项目, 然后浏览器地址输入
http://localhost:8080/getPic 即可看到图片
因为前端开发中, 很多时候和第三方对接的详情接口给过来的是上传文件id, 不会直接给图片url的(接口有url当然最舒服[呲牙])
<img src="http://localhost:8080/getPic?id=上传图片数据库保存的id"> 这样前端页面就可以直接看到图片了
第一次写文章, 主要想把项目中遇到的问题记录下来, 大家分享.