package me.zhengjie.appapi.util; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; import org.apache.commons.codec.binary.Base64; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.boot.web.server.WebServerException; import org.springframework.web.multipart.MultipartFile; import cn.hutool.core.io.IoUtil; import lombok.extern.slf4j.Slf4j; import me.zhengjie.appapi.config.AppConfigInfo; import me.zhengjie.appapi.util.StatusEnum.StepStatusEnum; import me.zhengjie.appapi.vo.FileUploadVo; import me.zhengjie.appapi.vo.FileVo; import me.zhengjie.appapi.vo.ImageUploadVo; import me.zhengjie.modules.file.FileHandle; import me.zhengjie.modules.file.FileHandleVo; /** * 将图片转换为Base64
* 将base64编码字符串解码成img图片 * * @创建时间 2015-06-01 15:50 * */ @Slf4j public class FileUploadUtil { private static FileHandle fileHandle; public static void setFileHandle(FileHandle fileHandle) { FileUploadUtil.fileHandle = fileHandle; } public static void main(String[] args) { // String imgFile = "E:\\demo\\image\\1.png";// 待处理的图片 // String imgfString = "data:image/png;base64,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AEiCIQAAAACQBEMAAAAAIAmGAAAAAEASDAEAAACAJBgCAAAAAEkwBAAAAACSYAgAAAAAJMEQAAAAAEiCIQAAAACQBEMAAAAAIAmGAAAAAEASDAEAAACAJBgCAAAAAEkwBAAAAACSYAgAAAAAJMEQAAAAAEiCIQAAAACQBEMAAAAAIAmGAAAAAEASDAEAAACAJBgCAAAAAEkwBAAAAACSYAgAAAAAJMEQAAAAAEiCIQAAAACQBEMAAAAAIAmGAAAAAEASDAEAAACAJBgCAAAAAEkwBAAAAACSYAgAAAAAJMEQAAAAAEiCIQAAAACQBEMAAAAAIAmGAAAAAEASDAEAAACAJBgCAAAAAEkwBAAAAACSYAgAAAAAJMEQAAAAAEiCIQAAAACQBEMAAAAAIAmGAAAAAEASDAEAAACAJBgCAAAAAEkwBAAAAACSYAgAAAAAJMEQAAAAAEiCIQAAAACQBEMAAAAAIAmGAAAAAEASDAEAAACAJBgCAAAAAEkwBAAAAACSYAgAAAAAJMEQAAAAAEiCIQAAAACQBEMAAAAAIAmGAAAAAEASDAEAAACAJBgCAAAAAEkwBAAAAACSYAgAAAAAJMEQAAAAAEiCIQAAAACQBEMAAAAAIAmGAAAAAEASDAEAAACAJBgCAAAAAEkwBAAAAACSYAgAAAAAJMEQAAAAAEiCIQAAAACQBEMAAAAAIAmGAAAAAEASDAEAAACAJBgCAAAAAEkwBAAAAACSYAgAAAAAJMEQAAAAAEiCIQAAAACQBEMAAAAAIAmGAAAAAEASDAEAAACAJBgCAAAAAEkwBAAAAACSYAgAAAAAJMEQAAAAAEiCIQAAAACQBEMAAAAAIAmGAAAAAEASDAEAAACAJBgCAAAAAEkwBAAAAACSYAgAAAAAJMEQAAAAAEiCIQAAAACQBEMAAAAAIAmGAAAAAEASDAEAAACAJBgCAAAAAEkwBAAAAACSYAgAAAAAJMEQAAAAAEiCIQAAAACQBEMAAAAAIAmGAAAAAEASDAEAAACAqpT/B7udZ7SxvT30AAAAAElFTkSuQmCC"; // System.out.println(imgfString.length()); // ImageUploadVo image; // saveImage(imgfString, "E:\\demo\\image\\"); // String imgbese = getImgStr(imgFile); // System.out.println(imgbese.length()); //// System.out.println(imgbese); // String imgFilePath = "E:\\demo\\image\\332.png";// 新生成的图片 // generateImage(imgfString, imgFilePath); } /** * 将图片转换成Base64编码 * * @param imgFile 待处理图片 * @return */ public static String getImgStr(String imgFile) { // 将图片文件转化为字节数组字符串,并对其进行Base64编码处理 byte[] data = null; // 读取图片字节数组 try { // 把文件读取到字节数组里面 data = FileUtils.readFileToByteArray(new File(imgFile)); } catch (IOException e) { e.printStackTrace(); } return new String(Base64.encodeBase64(data)); } /** * 对字节数组字符串进行Base64解码并生成图片,注意处理图片前面是否加了data:image/png;这个 * * @param imgStr 图片数据 * @param imgFilePath 保存图片全路径地址 * @return */ public static String saveImage(ImageUploadVo image) { // String imgStr = image.getBase64(); if (imgStr == null) // 图像数据为空 return null; try { String suffix = imageFileSuffix(imgStr); if (StringUtils.isNotEmpty(suffix)) { // 去掉data:image/jpeg;这种类型的 String[] base64Prefix = imgStr.split("base64,"); if (base64Prefix != null && base64Prefix.length > 1) { imgStr = base64Prefix[1]; } } // Base64解码 byte[] b = Base64.decodeBase64(imgStr); for (int i = 0; i < b.length; ++i) { if (b[i] < 0) {// 调整异常数据 b[i] += 256; } } if (StringUtils.isEmpty(suffix)) { suffix = getFormatName(b); } // TODO 这里再判断,通过二进制,如果还是失败抛出异常, // 通过类型上传文件到指定路径 String step = image.getStep(); String orderType = StepStatusEnum.getType(Integer.valueOf(step)); // 如果不存在,创建文件夹 String uuid = UUIDGenerator.uuid(); // 拼接文件路径 String fileName = uuid + "_" + image.getFileType() + "." + suffix; // 图片的路径 String imagePath = image.getBusinessNo() + "/" + orderType + "/" + fileName; // 这里目前只会说图片的 String contentType = "image/" + suffix; uploadFile(imagePath, contentType, b); // FileUtils.writeByteArrayToFile(fullPath, b); return imagePath; } catch (Exception e) { log.error("上传图片失败:" + e.getLocalizedMessage()); return null; } } public static String uploadFile(FileUploadVo file, MultipartFile partFile) { if (file.getFileUpload() == null) { return null; } String uploadFileName = partFile.getOriginalFilename(); // 拼接文件路径 String uuid = UUIDGenerator.uuid(); String step = file.getStep(); String orderType = StepStatusEnum.getType(Integer.valueOf(step)); // 得到文件后缀 int index = uploadFileName.lastIndexOf("."); String suffix = uploadFileName.substring(index + 1); String fileName = uuid + "_" + file.getFileType() + "." + suffix; // 通过类型上传文件到指定路径 String imagePath = file.getBusinessNo() + "/" + orderType + "/" + fileName; try { // app插入的是form-data // 这里先处理图片,等后面看还有其他的类型了 String contentType = ""; if ("pdf".equalsIgnoreCase(suffix)) { contentType = "application/pdf"; } else { contentType = "image/" + suffix; } uploadFile(imagePath, contentType, partFile.getInputStream()); return imagePath; } catch (Exception e) { log.error("上传图片失败:" + e.getLocalizedMessage()); return null; } } public static InputStream getInputStream(String objectName) throws Exception { return fileHandle.getObject(objectName); } /** * 获取图片类型 * * @param buf 二进制图片 * @return 图片类型 */ public static String getFormatName(byte[] buf) throws IOException { InputStream imageStream = new ByteArrayInputStream(buf); try (ImageInputStream imageInputStream = ImageIO.createImageInputStream(imageStream)) { Iterator imageReadersList = ImageIO.getImageReaders(imageInputStream); if (imageReadersList.hasNext()) { ImageReader reader = imageReadersList.next(); return reader.getFormatName().toLowerCase(); } } return null; } /** * 这个是通过base64编码得到后缀文件 * * @param base64Data * @return */ public static String imageFileSuffix(String base64Data) { String dataPrix = ""; String[] d = base64Data.split("base64,"); if (d != null && d.length == 2) { dataPrix = d[0]; } if (StringUtils.isNotBlank(dataPrix)) { String suffix = null; // data:image/jpeg;base64,base64编码的jpeg图片数据 if ("data:image/jpeg;".equalsIgnoreCase(dataPrix)) { suffix = "jpeg"; // data:image/x-icon;base64,base64编码的icon图片数据 } else if ("data:image/jpg;".equalsIgnoreCase(dataPrix)) { suffix = "jpg"; // data:image/x-icon;base64,base64编码的icon图片数据 } else if ("data:image/x-icon;".equalsIgnoreCase(dataPrix)) { suffix = "ico"; // data:image/gif;base64,base64编码的gif图片数据 } else if ("data:image/gif;".equalsIgnoreCase(dataPrix)) { suffix = "gif"; // data:image/png;base64,base64编码的png图片数据 } else if ("data:image/png;".equalsIgnoreCase(dataPrix)) { suffix = "png"; } return suffix; } return null; } /** * 上传文件通过文件的流 * * @param filePath * @param contentType * @param input * @throws Exception */ public static String upload(FileVo file) { if (file.getFile() == null) { return null; } String filePath = file.getFilePath(); MultipartFile multipartFile = file.getFile(); String uploadFileName = multipartFile.getOriginalFilename(); // 拼接文件路径 String uuid = UUIDGenerator.uuid(); // 得到文件后缀 int index = uploadFileName.lastIndexOf("."); String suffix = uploadFileName.substring(index); String fileName = uuid + "_" + file.getFileType() + suffix; file.setFileName(fileName); String imagePath = filePath + "/" + fileName; try { FileHandleVo fileHandlevo = new FileHandleVo(); fileHandlevo.setFilePath(imagePath); fileHandlevo.setContentType(multipartFile.getContentType()); fileHandlevo.setInputStream(multipartFile.getInputStream()); fileHandle.uploadFileStream(fileHandlevo); return imagePath; } catch (Exception e) { log.error("上传图片失败:" + e.getLocalizedMessage()); return null; } } // public static String saveHtml(String html, String businessNo) { // if (html == null) { // return null; // } // String uploadPath = AppConfigInfo.APP_UPLOAD_PATH; // // 拼接文件路径 // String fileName = UUIDGenerator.uuid() + ".html"; // String imagePath = "no" + businessNo + "/" + fileName; // String filePath = uploadPath + imagePath; // try { // // File file, String data, Charset charset // FileUtils.writeStringToFile(new File(filePath), html, "UTF-8"); // return imagePath; // } catch (IOException e) { // log.info("上传图片失败:" + e.getLocalizedMessage()); // return null; // } // } public static String saveHtml(String html, String businessNo, String orderId) { if (html == null) { return null; } // 拼接文件路径 String fileName = UUIDGenerator.uuid() + ".html"; String filePath = businessNo + "/" + StepStatusEnum.getType(orderId) + "/" + fileName; try { ByteArrayInputStream bis = new ByteArrayInputStream(html.getBytes("UTF-8")); // File file, String data, Charset charset FileHandleVo fileHandlevo = new FileHandleVo(); fileHandlevo.setFilePath(filePath); fileHandlevo.setContentType("text/html"); fileHandlevo.setInputStream(bis); fileHandle.uploadFileStream(fileHandlevo); bis.close(); return filePath; } catch (Exception e) { log.error("上传图片失败:" + e.getLocalizedMessage()); return null; } } public static String saveHtml(String filePath, String html) { if (html == null) { return null; } // 拼接文件路径 try { ByteArrayInputStream bis = new ByteArrayInputStream(html.getBytes("UTF-8")); // File file, String data, Charset charset FileHandleVo fileHandlevo = new FileHandleVo(); fileHandlevo.setFilePath(filePath); fileHandlevo.setContentType("text/html"); fileHandlevo.setInputStream(bis); fileHandle.uploadFileStream(fileHandlevo); bis.close(); return filePath; } catch (Exception e) { log.error("上传图片失败:" + e.getLocalizedMessage()); return null; } } /** * 上传文件通过文件的流 * * @param filePath * @param contentType * @param input * @throws Exception */ public static void uploadFile(String filePath, String contentType, InputStream inputSteam) throws Exception { ByteArrayInputStream bis = null; try { // 这里的inputSteam已经关闭了 byte[] b = IoUtil.readBytes(inputSteam); // 将b转成inputstream bis = IoUtil.toStream(b); FileHandleVo fileHandlevo = new FileHandleVo(); fileHandlevo.setFilePath(filePath); fileHandlevo.setContentType(contentType); fileHandlevo.setInputStream(bis); fileHandle.uploadFileStream(fileHandlevo); } finally { // 关闭流 if (bis != null) { bis.close(); } } } /** * 上传文件通过文件的流 * * @param filePath * @param contentType * @param input * @throws Exception */ public static void uploadFile(String filePath, String contentType, byte[] b) throws Exception { ByteArrayInputStream bis = null; try { // 这里的inputSteam已经关闭了 // 将b转成inputstream bis = IoUtil.toStream(b); FileHandleVo fileHandlevo = new FileHandleVo(); fileHandlevo.setFilePath(filePath); fileHandlevo.setContentType(contentType); fileHandlevo.setInputStream(bis); fileHandle.uploadFileStream(fileHandlevo); } finally { // 关闭流 if (bis != null) { bis.close(); } } } // public static String savePdf(String html, String businessNo) { // if (html == null) { // return null; // } // // String uploadPath = AppConfigInfo.APP_UPLOAD_PATH; // // 拼接文件路径 // String fileName = UUIDGenerator.uuid() + ".pdf"; // String path = "no" + businessNo + "/" + fileName; // String filePath = uploadPath + path; // try { // // File file, String data, Charset charset // HtmlConvertPdf.createPdfFile(html, filePath); // return path; // } catch (Exception e) { // log.info("转换pdf失败:" + e.getLocalizedMessage()); // return null; // } // } /** * Return the absolute temp dir for given web server. * @param prefix server name * @return the temp dir for given server. */ public static String createTempDir(String temp) { try { File tempDir = File.createTempFile("eladmin",temp); tempDir.delete(); tempDir.mkdir(); tempDir.deleteOnExit(); return tempDir.getAbsolutePath()+"/"; } catch (IOException ex) { throw new WebServerException( "Unable to create tempDir. java.io.tmpdir is set to " + System.getProperty("java.io.tmpdir"), ex); } } public static String savePdf(String html, String businessNo, String orderId) { if (html == null) { return null; } String uploadPath = createTempDir("upload"); // 拼接文件路径 String fileName = UUIDGenerator.uuid() + ".pdf"; String path = businessNo + "/" + StepStatusEnum.getType(orderId) + "/" + fileName; String sourceFilePath = uploadPath + path; InputStream inputStream = null; try { // File file, String data, Charset charset HtmlConvertPdf.createPdfFile(html, sourceFilePath); inputStream = new FileInputStream(sourceFilePath); // 这里需要把转换完成的删除掉 String contentType = "application/pdf"; // 通过流上传 // fileHandle.uploadFilePath(path, filePath, contentType); FileHandleVo fileHandlevo = new FileHandleVo(); fileHandlevo.setFilePath(path); fileHandlevo.setSourceFilePath(sourceFilePath); fileHandlevo.setContentType(contentType); fileHandlevo.setInputStream(inputStream); fileHandle.uploadFileStream(fileHandlevo); IoUtil.close(inputStream); // 这个删除文件留给具体的上传处理 FileUtils.deleteQuietly(new File(sourceFilePath)); return path; } catch (Exception e) { log.error("转换pdf失败:" + e.getLocalizedMessage()); return null; } } public static String createPdf(String html,String pdfPath) { if (html == null) { return null; } String uploadPath = AppConfigInfo.APP_UPLOAD_PATH; String sourceFilePath = uploadPath + pdfPath; InputStream inputStream = null; try { // File file, String data, Charset charset HtmlConvertPdf.createPdfFile(html, sourceFilePath); inputStream = new FileInputStream(sourceFilePath); // 这里需要把转换完成的删除掉 String contentType = "application/pdf"; // 通过流上传 // fileHandle.uploadFilePath(path, filePath, contentType); FileHandleVo fileHandlevo = new FileHandleVo(); fileHandlevo.setFilePath(pdfPath); fileHandlevo.setSourceFilePath(sourceFilePath); fileHandlevo.setContentType(contentType); fileHandlevo.setInputStream(inputStream); fileHandle.uploadFileStream(fileHandlevo); IoUtil.close(inputStream); // 这个删除文件留给具体的上传处理 FileUtils.deleteQuietly(new File(sourceFilePath)); return pdfPath; } catch (Exception e) { log.error("转换pdf失败:" + e.getLocalizedMessage()); return null; } } /** * 产生图片预览 * * @param fileKey 文件的 * @return */ public static String getFileUrl(String fileKey) { try { return fileHandle.getPreviewUrl(fileKey); } catch (Exception e) { log.info("图片预览失败:" + e.getLocalizedMessage()); return null; } } /** * 产生图片预览 * * @param fileKey 文件的 * @return */ public static String getPreviewUrl(String fileKey) { try { return fileHandle.getPreviewUrl(fileKey); } catch (Exception e) { log.error("图片预览失败:" + e.getLocalizedMessage()); return null; } } /** * 通过文件id得到文件流 * @param fileId * @return * @throws Exception */ public static byte[] getByte(String fileId) throws Exception{ try { return fileHandle.getByte(fileId); } catch (Exception e) { log.error("得到文件流失败:" + e.getLocalizedMessage()); return null; } } /** * 得到文件名称 * * @param fileKey 文件的 * @return */ public static String getFileName(String fileKey) { if (StringUtils.isEmpty(fileKey)) { return ""; } int index = fileKey.lastIndexOf("/"); if (index != -1) { String fileName = fileKey.substring(index + 1); return fileName; } return fileKey; } }