JAva実装Base 64ビット符号化転送添付ファイル

32403 ワード

JAva実装Base 64ビット符号化転送添付ファイル
仕事で使うものは、メモしておいて、今度使うときは参考にしてください.
上コード(web-infoパス下、クラス名およびガイドパッケージ同下)
//    base64   json      base64  
	public static void getBase64(String str) throws IOException{
		String aaString = null;
		try {
			//           
			aaString = CreateNewFileUtil.class.getClassLoader().getResource("").toURI().getPath();
		} catch (URISyntaxException e) {
			e.printStackTrace();
		}
		String base64 = null;
		String fileFormat = null;
		if (StringUtils.hasText(str)) {
			//   str json      ,      。
			JSONObject json_test = JSONObject.fromObject(str);
			//  json data      ,   json  
			String baseJson = json_test.get("data").toString().replace("[", "").replace("]", "");
			JSONObject json_test2 = JSONObject.fromObject(baseJson);
			//  base64   
			base64 = json_test2.get("file_path")+"";
			//              
			fileFormat = json_test2.get("file_name")+"";
		}
		//            web-info    ,      
		String path = aaString.substring(1,aaString.length()-8)+fileFormat;
		//       , spring.jpeg
        String filename = fileFormat;
        //   , spring
        String name = filename.substring(0,filename.indexOf("."));
        //    , .jpeg
        String suffix = filename.substring(filename.lastIndexOf("."));
        //    
        File descFile = new File(path);
        int i = 1;
        //        
        while(descFile.exists()) {
            String newFilename = name+"("+i+")"+suffix;
            path = aaString.substring(1,aaString.length()-8)+newFilename;
            //    
            descFile = new File(path);
            if (!descFile.exists()) {
				continue;
			}
            i++;
        }
		base64ToFile(base64,path);
	}
 //   base64     file
    public static boolean base64ToFile(String base64,String path) {
        byte[] buffer;
        try {
        	//      base64Util    。
            buffer = Base64.decode(base64);
            // BASE64Decoder  (       )。
            buffer = new BASE64Decoder().decodeBuffer(base64);
            //          
            FileOutputStream out = new FileOutputStream(path);
            out.write(buffer);
            out.close();
            return true;
        } catch (Exception e) {
            throw new RuntimeException("base64          
"
+ e.getMessage()); } }

通過するpropertiesプロファイル動的構成により生成されたファイルパス(フォルダが自動的に作成されない機能も追加されました)
package com.risen.sjcj.util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

import net.sf.json.JSONObject;

import org.springframework.util.StringUtils;

import sun.misc.BASE64Decoder;

public class CreateNewFileUtil {
	
	private String fileUrl;
	
	public CreateNewFileUtil() {
		//           
		InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("com/risen/base/config/fileUrl.properties");
		Properties p =new Properties();
		try {
			p.load(inputStream);
			this.fileUrl=p.getProperty("dataSource.fileUrl");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 
	}
	
	//    base64   json      base64  
	public static void getBase64(String str) throws IOException{
		
		CreateNewFileUtil createNewFileUtil = new CreateNewFileUtil();
		String url = null;
		//           
		url = createNewFileUtil.fileUrl;
		String base64 = null;
		String fileFormat = null;
		if (StringUtils.hasText(str)) {
			//   str json      ,      。
			JSONObject json_test = JSONObject.fromObject(str);
			//  json data      ,   json  
			String baseJson = json_test.get("data").toString().replace("[", "").replace("]", "");
			JSONObject json_test2 = JSONObject.fromObject(baseJson);
			//  base64   
			base64 = json_test2.get("file_path")+"";
			//              
			fileFormat = json_test2.get("file_name")+"";
		}
		//            web-info    ,      
		String path = url+fileFormat;
		//       , spring.jpeg
        String filename = fileFormat;
        //   , spring
        String name = filename.substring(0,filename.indexOf("."));
        //    , .jpeg
        String suffix = filename.substring(filename.lastIndexOf("."));
        //    
        File descFile = new File(path);
        //            
        File fileParent = descFile.getParentFile();
        //           ,       
        if(!fileParent.exists()){
            fileParent.mkdirs();
        }
        int i = 1;
        //        
        while(descFile.exists()) {
            String newFilename = name+"("+i+")"+suffix;
//            path = url.substring(1,url.length()-8)+newFilename;
            path = url+newFilename;
            //    
            descFile = new File(path);
            if (!descFile.exists()) {
				continue;
			}
            i++;
        }
		base64ToFile(base64,path);
	}
	
	
	 //   base64     file
    public static boolean base64ToFile(String base64,String path) {
    	
        byte[] buffer;
        try {
        	//      base64Util    。
            buffer = Base64.decode(base64);
            // BASE64Decoder  (       )。
            buffer = new BASE64Decoder().decodeBuffer(base64);
            //          
            FileOutputStream out = new FileOutputStream(path);
            out.write(buffer);
            out.close();
            return true;
        } catch (Exception e) {
            throw new RuntimeException("base64          
"
+ e.getMessage()); } } }

考慮すると、
https://www.cnblogs.com/lovling/p/6666994.html?utm_source=itdadao&utm_medium=referral
https://blog.csdn.net/shaohe18362202126/article/details/80717385
権利侵害があれば、削除に連絡してください.