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>

     

  • 相关阅读:
    百度云BaaS体系揭秘,突破共识机制、单机计算和串行处理三大瓶颈
    百度云BaaS体系揭秘,突破共识机制、单机计算和串行处理三大瓶颈
    硬件笔试面试题
    硬件笔试面试题
    硬件笔试面试题
    hadoop生态搭建(3节点)-01.基础配置
    hadoop生态搭建(3节点)-01.基础配置
    Java Web开发中路径问题小结
    JavaScript 对象分类
    JavaScript 对象分类
  • 原文地址:https://www.cnblogs.com/wangjinyu/p/12858358.html
Copyright © 2011-2022 走看看