java/Springboot项目把Base64数据转为文件

2022年6月5日09:25:51

前言

以下记录如何将base64的数据转为文件保存在本地

依赖

pom.xml需要导入以下依赖

<dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId></dependency>

base64转文件工具代码

importjava.io.*;importjava.nio.file.Files;importjava.nio.file.Paths;importjava.nio.file.StandardOpenOption;importorg.apache.commons.codec.binary.Base64;importsun.misc.BASE64Decoder;publicclassBase64ToFile{// 传入base64编码字符以及保存路径publicStringBase64ToFile(String base64,String filePath)throwsIOException{// base64编码字符必须不能包含base64的前缀,否则会报错// filePath需要为具体到文件的名称和格式,如111.txt// 文件路径需要双斜杠转义,如:  D:\\files\\111.txtif(base64==null&& filePath==null){return"生成文件失败,未传入参数!";}// 判断是否base64是否包含data:image/png;base64等前缀,如果有则去除if(base64.contains("data:image/png;base64")){
            base64= base64.substring(22);System.out.println("包含png"+base64);}if(base64.contains("data:image/jpeg;base64")){
            base64= base64.substring(23);System.out.println("包含jpeg"+base64);}if(base64.contains("data:application/pdf;base64")){
            base64= base64.substring(28);System.out.println("包含pdf"+base64);}BASE64Decoder decoder=newBASE64Decoder();byte[] bytes= decoder.decodeBuffer(base64);for(int i=0; i<bytes.length;++i){// 调整异常数据if(bytes[i]<0){
                bytes[i]+=256;}}OutputStream outputStream=null;InputStream inputStream=newByteArrayInputStream(bytes);// 此处判断文件夹是否存在,不存在则创建除文件外的父级文件夹File file=newFile(filePath);if(!file.exists()){System.out.println("上级目录"+file.getParentFile());
            file.getParentFile().mkdirs();}try{// 生成指定格式文件
            outputStream=newFileOutputStream(filePath);byte[] buff=newbyte[1024];int len=0;while((len= inputStream.read(buff))!=-1){
                outputStream.write(buff,0, len);}}catch(IOException e){
            e.printStackTrace();}finally{
            outputStream.flush();
            outputStream.close();}return"生成文件成功!";}}

结语

以上为把Base64转文件的具体代码

  • 作者:相与还
  • 原文链接:https://blog.csdn.net/xc9711/article/details/124111779
    更新时间:2022年6月5日09:25:51 ,共 1670 字。