zoukankan      html  css  js  c++  java
  • java 将本地文件或网络文件与base64互相转换

    一:将网络文件转为Base64

    将文件转为base64

    public static String fileToBase64(String url){
    	int byteread = 0;
    	String total = null;
    	byte[] totalbyte = new byte[0];
    	try {
    		URL url = new URL(url);
    		URLConnection conn = url.openConnection();
    		InputStream inStream = conn.getInputStream();
    		byte[] buffer = new byte[1204];
    		while ((byteread = inStream.read(buffer)) != -1) {
    			//拼接流,这样写是保证文件不会被篡改
    			totalbyte = byteMerger(totalbyte,buffer,byteread);
    		}
    		inStream.close();
    	} catch (FileNotFoundException e) {
    		e.printStackTrace();
    	} catch (IOException e) {
    		e.printStackTrace();
    	}
    	return Base64.encodeBase64String(totalbyte)
    }
    

      将base转为文件

      

    public static void base64ToFile(String base64, String filePath) {
    		try {
    			byte[] bytes = Base64.decodeBase64(base64);
    			//base解密
    			File videoFile = new File(filePath);
    			//输入文件
    			FileOutputStream fos = new FileOutputStream(videoFile);
    			fos.write(bytes, 0, bytes.length);
    			fos.flush();
    			fos.close();
    		} catch (IOException e) {
    		}
    	}
    

      

    二:将本地文件转Base64

    转Base64

    public static String videoToBase64(File videofilePath) {
    		long size = videofilePath.length();
    		byte[] imageByte = new byte[(int) size];
    		FileInputStream fs = null;
    		BufferedInputStream bis = null;
    		try {
    			fs = new FileInputStream(videofilePath);
    			bis = new BufferedInputStream(fs);
    			bis.read(imageByte);
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			if (bis != null) {
    				try {
    					bis.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    			if (fs != null) {
    				try {
    					fs.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    		}
    		return Base64.encodeBase64String(imageByte);
    	}
    

      

    将Base64转文件

    public static void base64ToFile(String base64, String filePath) {
    		try {
    			byte[] bytes = Base64.decodeBase64(base64);
    			//base解密
    			File videoFile = new File(filePath);
    			//输入文件
    			FileOutputStream fos = new FileOutputStream(videoFile);
    			fos.write(bytes, 0, bytes.length);
    			fos.flush();
    			fos.close();
    		} catch (IOException e) {
    		}
    	}
    

      

    注意:

    在将文件转Base64字符时,如果使用sun下的BASE64Encoder时会导致转换出来的Base64自动换行,原因是RFC2045中有规定Base64一行不能超过76字符,超过则添加回车换行符所以导致转换出来的Base64字符会出现换行,解决方法是使用Apache的 commons-codec.jar,Base64.encodeBase64String(byte[])得到的Base64字符不会出现换行

    commons-codec   1.4版本时也会出现换行,使用1.8时不会出现换行,其他版本没有测试

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

     

  • 相关阅读:
    解决Eclipse中“诡异”的错误:找不到或无法加载主类
    eclipse 中的注释 快捷键 多行注释快捷键 单行注释快捷键
    将Eclipse设置为黑色主题
    Javac提示不是内部或外部命令
    js粒子旋涡
    canvas黑客帝国代码雨特效 | jQuery特效|手机微信网站特效| 网页特效库
    python笔记--冒泡排序升级版
    MySQL5.7(二)数据库的基本操作
    Linux命令应用大词典-第1章 登录、退出、关机和重启
    第1章 Linux命令行简介
  • 原文地址:https://www.cnblogs.com/wangjinyu/p/12858358.html
Copyright © 2011-2022 走看看