• 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>

     

  • 相关阅读:
    10-tensorflow-tf.concat()
    09-tensorflow-tf.split()
    10-numpy笔记-np.random.randint
    学习网络编程的一些实用技巧和细节
    读书笔记_Effective_C++_条款三十一:将文件间的编译依存关系降至最低(第一部分) 重新学习了 继续学习第二 三部分更加精彩
    对四次挥手中的TIME_WAIT状态的学习
    accept 和 connect API深入 重点accept阻塞和非阻塞问题学习
    几种IO情况的学习和总结 关于 =====阻塞/非阻塞以及同步/异步区别
    tcp头和ip头 图文简介和简要说明
    Nginx 为什么要延迟关闭
  • 原文地址:https://www.cnblogs.com/wangjinyu/p/12858358.html
Copyright © 2020-2023  润新知