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>

     

  • 相关阅读:
    2018 eclipse安装反编译插件
    Buffer flip()方法
    区块链2
    Mist 转移默认区块存储位置方法
    区块链1
    如何在Ubuntu下安装”.deb“、”.bin“、”.tar.gz“、”.tar.bz2“格式的软件包!
    eclipse 性能调优之内存分配
    linux中搭建java开发环境
    在 Ubuntu 14.04 上安装 Ubuntu Tweak 0.8.8
    Ubuntu各个版本的介绍
  • 原文地址:https://www.cnblogs.com/wangjinyu/p/12858358.html
Copyright © 2011-2022 走看看