| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552 |
- 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<br>
- * 将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<ImageReader> 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;
- }
-
- }
|