文章目录

  • 一、Base64文件
  • 二、下载Base64文件
  • 三、总结

Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。

一、Base64文件

​ 在项目中,数据库中存放文件使用的是mediumblob类型的二进制格式,这里用file_stream字段来表示,在java后台中的mysql返回参数中使用cast(file_stream as char)转为base64。

​ 目前存放的有三类文件,分别是图片、word、pdf。理论上来说,将Base64文件的字符串直接输入到浏览器的地址栏中就可以直接访问,但是发现超过一定大小的文件就没办法直接在浏览器中打开了,所以需要通过后台将Base64文件下载到本地查看。

Base64图片文件的格式如下:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATEAAAElCAYAAACMItXlAAAgAElEQVR4nO2dB5RURdqGa8g5g+QMklSQbCArSYK7IMlfFAUFDJgTCouKAWWVlSyKuwKC7EpUVKJZokrOOecokuY/bzGNMEz...

二、下载Base64文件

​ 思路解析:将Base64解码为字节数组->将字节数组通过FileOutputStream输出到文件

  1. 首先我们需要借助Base64工具类
import java.io.IOException;public class Base64Utils {/*** 编码* @param content* @return*/public static String encode(byte[] content) {return new sun.misc.BASE64Encoder().encode(content);}/*** 解码* @param source* @return*/public static byte[] decode(String source) {try {sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();return decoder.decodeBuffer(source);} catch (IOException e) {e.printStackTrace();}return null;}
}
  1. 将Base64字符串进行解码为字节数组,并输出到本地图片(PDF、docx等其他格式文件同理)
public static void main(String[] args) {// 若没有base64字符串做测试,则可以用本地文件转base64进行实验// File file = new File("E:\\test.txt");// byte[] bFile = new byte[(int) file.length()];String base64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATEAAAElCAYAAACMItXlAAAgAElE...";// 使用Base64Utils的decode方法进行解码byte[] fileBytes = Base64Utils.decode(base64);try (FileOutputStream fileOuputStream = new FileOutputStream("D:\\1.png")) {fileOuputStream.write(fileBytes);} catch (IOException e) {e.printStackTrace();}
}

三、总结

​ 难点在于Base64文件的下载需要先解码再转File下载,并且需要对Base64有一定的理解。

参考资料:

  • 如何将 Java byte [] 保存到文件?
  • BASE64编码解码

Base64解码文件下载相关推荐

  1. base64 解码

    在ecplise上运行的好好的,但是到服务器上发现base64解码不正确,出现了乱码的现象 程序代码如下: new String(Base64.decode(infreturn.getReturnSt ...

  2. 做个游戏 writeup base64解码网址

    下载得到一个  jar  包,用  JD-GUI  打开 RGFqaURhbGlfSmlud2FuQ2hpamk=  -->  base64解码  -->  flag{DajiDali_J ...

  3. //BASE64解码成File文件

    //BASE64解码成File文件public static void base64ToFile(String base64, String destPath,String fileName) {Fi ...

  4. php如何解码图片,php基于base64解码图片与加密图片还原实例_PHP

    本文实例讲述了php基于base64解码图片与加密图片还原的实现方法.分享给大家供大家参考.具体实现方法如下: 本例中$data是一段经过base64编码的图片.具体代码如下: 代码如下: //文件名 ...

  5. des加密+base64编码,base64解码+des解密

    des加密+base64编码,base64解码+des解密 des简单介绍 base64简单介绍 运行效果图 TestActivity.java DataEncryptionUtil.java des ...

  6. 前端DES加密、base64编码,后端DES解密、base64解码

    项目场景: 在系统开发的过程中有的时候,我们为了数据的安全性会把前端的数据进行加密,然后再在后端程序中对加密数据进行解密或解密,今天我们就在这里说2种简单的方法(DES加密.base64编码) 具体实 ...

  7. js base64解码JWT失败:VM273:1 Uncaught DOMException: Failed to execute 'atob' on 'Window': The string to

    前端获取后端服务生成JWT,利用js方法base64解码payload段: window.atob("eyJzdWIiOiJ0ZXN0MyIsInVzZXJJZCI6IjEwMTY5MiIs ...

  8. Android Base64解码失败问题

    一.现象描述 在开发过程中遇到了base64解码失败问题,ios和Android同时调用上传人脸数据,通过拍照拿到图片信息再装成base64字符串传给后台,此时发现ios上传的图片没有问题,Andro ...

  9. C#:base64解码显示

    1.概述 前段时间,因为项目需要,需要方便对base64解码后的数据查看,网上找了一通,只有解码编码,但没有方便进行结构解析的.于是自己写了一个. 2.代码 解码分析 void btn_decode_ ...

  10. Base64解码过程必须关注的问题

    背景 这两天开发工作中,需要运用 Base64来进行数据的编解码.使用 Cryptopp库的 base64(网络上其他基于Boost 的 BIO)都会出现解码出来的字节数只是其中很少的一部分,具体编码 ...

最新文章

  1. linux 为什么 c语言,为什么C程序里一定要写main函数
  2. 1哈哈欢迎使用CSDN-markdown编辑器
  3. andorid 通过包名启动应用
  4. git-commit编辑器nano改vim
  5. 将字符串转换为列显示
  6. 计算机模拟 博弈 善意,从两本奇书看人与人的重复博弈
  7. xcode3.2.6升级至4.0.2经验加教训总结(转)
  8. Windows 恢复环境(Windows RE模式)
  9. boost互斥锁_boost锁使用总结
  10. c++基础语句代码(循环语句)
  11. 解析 | 如何从频域的角度解释CNN(卷积神经网络)?
  12. Winserver普通域用户账户无权限启动停止系统服务(启动停止按钮是灰色)
  13. [网络性能测试学习笔记] 测试AX3 Pro WiFi6无线路由器的系统转发能力(硬件转发交换能力L23吞吐量,L47应用层能力-最大可支持设备用户数,并发连接数等)
  14. vue 商城浏览足迹_vue 移动端记录页面浏览位置的方法
  15. [Rust笔记]`Deref coercion`(自动解引用类型转换)精制总结
  16. 环游世界,走遍读过的每一个国家和城镇
  17. ExtJs之Text文本框Text和文本域TextArea
  18. n76e003引脚图_新手如何入门新塘N76E003单片机
  19. ubuntu硬盘修复
  20. 三星android p rom包,LineageOS 16正式推出:安卓9 Pie刷机包来了,小米/三星/一加都有...

热门文章

  1. 可以说是迄今为止最好用的右键菜单管理工具
  2. C++类的定义和声明怎么写
  3. php微信登陆流程,thinkphp微信授权登陆具体流程~
  4. nginx源码分析—reuseport的使用
  5. 数字经济进入2.0时代 浙里有为共赢新“基”遇
  6. MySQL 系统表列注释的应用
  7. 电脑桌面有计算机和回收站怎么办,电脑回收站不见了怎么办 电脑回收站找回的4种方法...
  8. 【Webpack 性能优化系列(2) - source-map】
  9. Cocos2d-x_CCSprite(精灵类)介绍
  10. leetcode寻找重复数