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;
}
}