前台传入base64图片,java后台转为MultipartFile文件
2018-03-20 11:44
323 查看
前几天给app写接口,其中一个接口需要上传图片,以前的接口都是上传的file类型,后台可以直接使用MultipartFile来接收这个文件。这次app的开发说不行不行就不行,必须要上传base64格式,我就在网上找了一下,发现都比较麻烦,最后还是在英文网站上找到了一个比较好的处理方法,程序员还是有必要学学英语的,是个叫Rob Black的哥们写的,也是个秃顶,哎。下面是后端的实现代码。MultipartFile是spring框架中的接口,主要的实现类都不太适用于base64的上传文件,这里需要自己写一个实现类。代码如下:public class BASE64DecodedMultipartFile implements MultipartFile {private final byte[] imgContent;private final String header;public BASE64DecodedMultipartFile(byte[] imgContent, String header) {this.imgContent = imgContent;this.header = header.split(";")[0];}@Overridepublic String getName() {// TODO - implementation depends on your requirementsreturn System.currentTimeMillis() + Math.random() + "." + header.split("/")[1];}@Overridepublic String getOriginalFilename() {// TODO - implementation depends on your requirementsreturn System.currentTimeMillis() + (int)Math.random() * 10000 + "." + header.split("/")[1];}@Overridepublic String getContentType() {// TODO - implementation depends on your requirementsreturn header.split(":")[1];}@Overridepublic boolean isEmpty() {return imgContent == null || imgContent.length == 0;}@Overridepublic long getSize() {return imgContent.length;}@Overridepublic byte[] getBytes() throws IOException {return imgContent;}@Overridepublic InputStream getInputStream() throws IOException {return new ByteArrayInputStream(imgContent);}@Overridepublic void transferTo(File dest) throws IOException, IllegalStateException {new FileOutputStream(dest).write(imgContent);}}然后再写个工具类:public static MultipartFile base64ToMultipart(String base64) {try {String[] baseStrs = base64.split(",");BASE64Decoder decoder = new BASE64Decoder();byte[] b = new byte[0];b = decoder.decodeBuffer(baseStrs[1]);for(int i = 0; i < b.length; ++i) {if (b[i] < 0) {b[i] += 256;}}return new BASE64DecodedMultipartFile(b, baseStrs[0]);} catch (IOException e) {e.printStackTrace();return null;}}然后在代码中调用工具类就可以啦
相关文章推荐
- 将前台json对象传入java后台
- [java]图片文件转为BASE64编码
- java开发,前台用EXTJS展示,后台 swfuplaod批量图片上传组件的运用
- java开发,前台用EXTJS展示,后台 swfuplaod批量图片上传组件的运用
- jQuery使用Base64 生成图片预览和java后台不同的接收处理方式
- java 后台把数据以图片的形式传到前台
- java后台保存base64图片数据
- Java-图片转为Base64
- 前台如何将多个json对象传入java后台[修正]
- Base64 JAVA后台编码与JS前台解码(解决中文乱码问题)
- java后台JSON解析前台传入的数组JSON字符串
- [Java]将Base64编码字符转为图片
- java 后台将base64字符串保存为图片
- springMVC上传图片,前台JS ,后台JAVA
- 将前台json对象传入java后台
- 将前台json对象传入java后台
- 前台用javaScript,后台用java裁剪图片
- java 后台将base64字符串保存为图片
- flex前台加载图片向Java后台传递
- Java将图片转为base64