文件與base64如何互轉?


很多情況下,需要把文件轉成base64字符串進行傳輸,原因就是直接使用流傳輸可能會導致流接收不完整。使用base64字符串接收然后再轉碼保存文件可避免這種問題。下面的方法僅供參考:

1.base64轉文件

 /**
     * base64轉文件保存
     *
     * @param base64 base64字符串
     * @param basePath 文件保存的根路徑
     * @param suffix   文件后綴
     * @param fileName 文件名
     * @return
     */
    public static String[] base64ToFile(String base64, String basePath, String suffix, String fileName) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String dateStr = sdf.format(new Date());
        if (basePath.contains("\\")) {
            basePath = basePath.replace("\\", File.separator);
        }
        File f = createDir(basePath + File.separator + dateStr);
        if (null == fileName) {
            //補齊后綴
            suffix = suffix.trim();
            if (!suffix.startsWith(".") && suffix.indexOf(".") == -1) {
                suffix = "." + suffix;
            }
            fileName = UUID.randomUUID() + suffix;
        }
        try {
            byte[] buffer = new BASE64Decoder().decodeBuffer(base64);
            File file = new File(f, fileName);
            FileOutputStream out = new FileOutputStream(file);
            out.write(buffer);
            out.close();
            String[] path = {dateStr, fileName};
            return path;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

根據傳入的base64字符串,可根據傳入的文件后綴和UUID作為文件名把文件保存到指定位置,也可以直接傳入文件名進行保存;最終都返回文件的路徑和文件名。

2.文件轉base64

   /**
     * 文件轉base64
     *
     * @param filePath
     * @return
     */
    public static String fileToBase64(String filePath) {
        if (filePath == null) {
            return null;
        }
        try {
            byte[] b = Files.readAllBytes(Paths.get(filePath));
            return Base64.getEncoder().encodeToString(b);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

通過傳入文件的路徑對文件進行轉換。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM