{"id":117,"date":"2024-10-30T17:45:07","date_gmt":"2024-10-30T09:45:07","guid":{"rendered":"https:\/\/zhoujibin.com\/?p=117"},"modified":"2024-10-30T17:45:07","modified_gmt":"2024-10-30T09:45:07","slug":"base64%e6%96%87%e4%bb%b6%e5%8a%a0%e5%af%86%e5%8f%8a%e8%bf%98%e5%8e%9f","status":"publish","type":"post","link":"https:\/\/zhoujibin.com\/?p=117","title":{"rendered":"Base64\u6587\u4ef6\u52a0\u5bc6\u53ca\u8fd8\u539f"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">\u80cc\u666f<\/h1>\n\n\n\n<p>\u5b9e\u9645\u5de5\u4f5c\u4e2d\u4e24\u4e2a\u670d\u52a1\u4e4b\u95f4\u7684\u63a5\u53e3\u8c03\u7528\u53ef\u80fd\u4f1a\u6d89\u53ca\u5230\u6587\u4ef6\u52a0\u5bc6\u4f20\u8f93\u7684\u95ee\u9898\uff0c<a href=\"https:\/\/baike.baidu.com\/item\/BASE64\/8545775\">Base64<\/a>\u5c31\u662f\u5176\u4e2d\u4e00\u79cd\u89e3\u51b3\u65b9\u6848\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u5de5\u5177\u7c7b<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n * \u53c2\u8003\uff1ahttps:\/\/blog.csdn.net\/p812438109\/article\/details\/108370312\n *\/\n@Slf4j\npublic class Base64FileUtils {\n\n    \/**\n     * \u6839\u636e\u6587\u4ef6\u8def\u5f84\u52a0\u5bc6\n     * @param filePath\n     * @return\n     *\/\n    public static String encode(String filePath) {\n        if (StrUtil.isNotBlank(filePath)) {\n            return encode(new File(filePath));\n        }\n        return null;\n    }\n\n    \/**\n     * \u6839\u636e\u6587\u4ef6\u52a0\u5bc6\n     * @param file\n     * @return\n     *\/\n    public static String encode(File file) {\n        if (!file.exists()) {\n            throw new RuntimeException(\"File is not exist\");\n        }\n        return encode(FileUtil.getName(file), FileUtil.readBytes(file));\n    }\n    \/**\n     * \u6839\u636e\u6587\u4ef6\u540d\u79f0\u53ca\u5185\u5bb9\u52a0\u5bc6\n     * @param fileName\n     * @param content\n     * @return\n     *\/\n    public static String encode(String fileName, byte&#91;] content) {\n        if (StrUtil.isNotBlank(fileName) &amp;&amp; ArrayUtil.isNotEmpty(content)) {\n            String fileExtName = FileNameUtil.extName(fileName);\n            String base64FileType = Base64FileType.getByFileExtName(fileExtName);\n            if (StrUtil.isNotBlank(base64FileType)) {\n                return base64FileType + Base64.encode(content);\n            }\n        }\n        return null;\n    }\n\n    \/**\n     * \u6839\u636e\u6587\u4ef6\u540d\u79f0\u53ca\u52a0\u5bc6\u5b57\u7b26\u4e32\u89e3\u5bc6\n     * @param encodeStr\n     * @param fileName\n     * @return\n     *\/\n    public static byte&#91;] decode(String encodeStr, String fileName) {\n        if (StrUtil.isNotBlank(fileName) &amp;&amp; StrUtil.isNotBlank(encodeStr)) {\n            String fileExtName = FileNameUtil.extName(fileName);\n            String base64FileType = Base64FileType.getByFileExtName(fileExtName);\n            if (StrUtil.isNotBlank(base64FileType)) {\n                return Base64.decode(encodeStr.replace(base64FileType, StrUtil.EMPTY));\n            }\n        }\n        return null;\n    }\n\n    \/**\n     * \u89e3\u7801\u5e76\u751f\u6210\u6587\u4ef6\n     * @param encodeStr\n     * @param targetFilePath\n     * @return\n     *\/\n    public static boolean decodeToFile(String encodeStr, String targetFilePath) {\n        if (StrUtil.isNotBlank(encodeStr)) {\n            String fileExtName = FileNameUtil.extName(targetFilePath);\n            String base64FileType = Base64FileType.getByFileExtName(fileExtName);\n            if (StrUtil.isNotBlank(base64FileType)) {\n                FileUtil.writeBytes(Base64.decode(encodeStr.replace(base64FileType, StrUtil.EMPTY)), targetFilePath);\n                return true;\n            }\n        }\n        return false;\n    }\n\n    \/**\n     * base64\u6587\u4ef6\u7c7b\u578b\u5bf9\u5e94\u679a\u4e3e\u7c7b\n     *\/\n    public enum Base64FileType {\n        \/\/ \u6587\u4ef6\u7c7b\u578b\n        BASE64_FILE_TYPE_DOC(\"doc\", \"data:application\/msword;base64,\"),\n        BASE64_FILE_TYPE_DOCX(\"docx\", \"data:application\/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,\"),\n        BASE64_FILE_TYPE_XLS(\"xls\", \"data:application\/vnd.ms-excel;base64,\"),\n        BASE64_FILE_TYPE_XLSX(\"xlsx\", \"data:application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,\"),\n        BASE64_FILE_TYPE_PDF(\"pdf\", \"data:application\/pdf;base64,\"),\n        BASE64_FILE_TYPE_PPT(\"ppt\", \"data:application\/vnd.ms-powerpoint;base64,\"),\n        BASE64_FILE_TYPE_PPTX(\"pptx\", \"data:application\/vnd.openxmlformats-officedocument.presentationml.presentation;base64,\"),\n        BASE64_FILE_TYPE_TXT(\"txt\", \"data:text\/plain;base64,\"),\n\n        \/\/ \u56fe\u7247\u7c7b\u578b\n        BASE64_FILE_TYPE_PNG(\"png\", \"data:image\/png;base64,\"),\n        BASE64_FILE_TYPE_JPG(\"jpg\", \"data:image\/jpeg;base64,\"),\n        BASE64_FILE_TYPE_JPEG(\"jpeg\", \"data:image\/jpeg;base64,\"),\n        BASE64_FILE_TYPE_GIF(\"gif\", \"data:image\/gif;base64,\"),\n        BASE64_FILE_TYPE_SVG(\"svg\", \"data:image\/svg+xml;base64,\"),\n        BASE64_FILE_TYPE_ICO(\"ico\", \"data:image\/x-icon;base64,\"),\n        BASE64_FILE_TYPE_BMP(\"bmp\", \"data:image\/bmp;base64,\"),\n\n        \/\/ \u4e8c\u8fdb\u5236\u6d41\n        BASE64_FILE_TYPE_OCTET_STREAM(\"octet-stream\", \"data:application\/octet-stream;base64,\")\n        ;\n\n        Base64FileType(String code, String value) {\n            this.fileExtName = code;\n            this.base64FileType = value;\n        }\n\n        \/**\n         * \u6587\u4ef6\u6269\u5c55\u540d\u7c7b\u578b\n         *\/\n        private String fileExtName;\n        \/**\n         * \u6587\u4ef6\u5bf9\u5e94\u7684base64\u7c7b\u578b\n         *\/\n        private String base64FileType;\n\n        public String getFileExtName() {\n            return fileExtName;\n        }\n\n        public String getBase64FileType() {\n            return base64FileType;\n        }\n\n        public static String getByFileExtName(String fileExtName) {\n            Base64FileType&#91;] types = Base64FileType.values();\n            for (Base64FileType type : types) {\n                if (type.getFileExtName().equals(fileExtName)) {\n                    return type.getBase64FileType();\n                }\n            }\n            return null;\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u6d4b\u8bd5\u793a\u4f8b<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>public class Base64FileUtilsTest {\n    String BASE_DIR = \"E:\\\\1temp\\\\\";\n\n    \/**\n     * \u6a21\u62df\u9700\u8981\u4f20\u8f93\u7684\u6587\u4ef6\n     *\/\n    String SOURCE_FILE_PATH = BASE_DIR.concat(\"1.docx\");\n\n    \/**\n     * \u6a21\u62df\u63a5\u53e3\u8def\u5f84\n     *\/\n    String URL = \"http:\/\/localhost:8080\/encode\";\n\n    \/**\n     * \u6a21\u62df\u52a0\u5bc6\n     *\/\n    @Test\n    public void testEncode() {\n        String encodeStr = Base64FileUtils.encode(SOURCE_FILE_PATH);\n        Map&lt;String, Object&gt; params = new HashMap&lt;&gt;();\n        params.put(\"fileName\", FileUtil.getName(SOURCE_FILE_PATH));\n        params.put(\"fileContent\", encodeStr);\n        this.sendJsonPostRequest(URL, params);\n    }\n\n    \/**\n     * \u6a21\u62df\u53d1\u9001\u8bf7\u6c42\n     *\n     * @param url\n     * @param params\n     * @return\n     *\/\n    private String sendJsonPostRequest(String url, Map&lt;String, Object&gt; params) {\n        Map&lt;String, String&gt; header = new HashMap&lt;&gt;();\n        header.put(\"Content-Type\", \"application\/json;charset=UTF-8\");\n        return HttpUtil.createPost(url).body(JSONUtil.toJsonStr(params)).addHeaders(header).execute().body();\n    }\n\n    \/**\n     * \u6a21\u62df\u89e3\u5bc6\u540e\u751f\u6210\u7684\u6587\u4ef6\u8def\u5f84\n     *\/\n    String TARGET_FILE_PATH = BASE_DIR.concat(\"encode.docx\");\n\n    \/**\n     * \u6a21\u62df\u89e3\u5bc6\u5e76\u751f\u6210\u6587\u4ef6\n     *\/\n    @Test\n    public void testDecode() {\n        String decodeStr = this.getEncodeStr();\n        Base64FileUtils.decodeToFile(decodeStr, TARGET_FILE_PATH);\n    }\n\n    \/**\n     * \u6a21\u62df\u83b7\u53d6\u52a0\u5bc6\u5b57\u7b26\u4e32\n     *\/\n    public String getEncodeStr() {\n        \/\/ \u76f8\u5173\u7684\u4e1a\u52a1\u64cd\u4f5c\n        return \"xxx\";\n    }\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u80cc\u666f \u5b9e\u9645\u5de5\u4f5c\u4e2d\u4e24\u4e2a\u670d\u52a1\u4e4b\u95f4\u7684\u63a5\u53e3\u8c03\u7528\u53ef\u80fd\u4f1a\u6d89\u53ca\u5230\u6587\u4ef6\u52a0\u5bc6\u4f20\u8f93\u7684\u95ee\u9898\uff0cBase64\u5c31\u662f\u5176\u4e2d\u4e00\u79cd\u89e3\u51b3\u65b9\u6848\u3002 \u5de5\u5177 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[24],"class_list":["post-117","post","type-post","status-publish","format-standard","hentry","category-java","tag-base64"],"_links":{"self":[{"href":"https:\/\/zhoujibin.com\/index.php?rest_route=\/wp\/v2\/posts\/117"}],"collection":[{"href":"https:\/\/zhoujibin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zhoujibin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zhoujibin.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zhoujibin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=117"}],"version-history":[{"count":1,"href":"https:\/\/zhoujibin.com\/index.php?rest_route=\/wp\/v2\/posts\/117\/revisions"}],"predecessor-version":[{"id":118,"href":"https:\/\/zhoujibin.com\/index.php?rest_route=\/wp\/v2\/posts\/117\/revisions\/118"}],"wp:attachment":[{"href":"https:\/\/zhoujibin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=117"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zhoujibin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=117"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zhoujibin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}