赞
踩
问题:最近遇到一个上传文件的问题,前端使用了另一种传值,就是Base64字符串传给后台 ,一开始没有对其进行解码操作,存入数据库时就超长了,今天这里提供一种base64和file之间相互转化的工具类,以便日后参考
- /**
- *
- * @param path
- * @return String
- * @description 将文件转base64字符串
- * @date 2018年3月20日
- * @author changyl
- * File转成编码成BASE64
- */
-
- public static String fileToBase64(String path) {
- String base64 = null;
- InputStream in = null;
- try {
- File file = new File(path);
- in = new FileInputStream(file);
- byte[] bytes=new byte[(int)file.length()];
- in.read(bytes);
- base64 = Base64.getEncoder().encodeToString(bytes);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (in != null) {
- try {
- in.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- return base64;
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
- //BASE64解码成File文件
- public static void base64ToFile(String destPath,String base64, String fileName) {
- File file = null;
- //创建文件目录
- String filePath=destPath;
- File dir=new File(filePath);
- if (!dir.exists() && !dir.isDirectory()) {
- dir.mkdirs();
- }
- BufferedOutputStream bos = null;
- java.io.FileOutputStream fos = null;
- try {
- byte[] bytes = Base64.getDecoder().decode(base64);
- file=new File(filePath+"/"+fileName);
- fos = new java.io.FileOutputStream(file);
- bos = new BufferedOutputStream(fos);
- bos.write(bytes);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (bos != null) {
- try {
- bos.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if (fos != null) {
- try {
- fos.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
☛需要注意:标红的base64在这里需要去掉
baseStr = baseStr.replace("data:image/jpeg;base64,", "");//base64解密部分乱码问题(“+” 号,在urlecode编码中会被解码成空格)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。