Commit 6c30f936 authored by liqin's avatar liqin 💬

bug fixed

parent 98bee46a
package cn.wisenergy.chnmuseum.party.common.dfs; package cn.wisenergy.chnmuseum.party.common.dfs;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import org.csource.common.MyException;
import org.csource.common.NameValuePair; import org.csource.common.NameValuePair;
import org.csource.fastdfs.*; import org.csource.fastdfs.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.io.IOException; import javax.imageio.ImageIO;
import java.io.InputStream; import java.awt.image.BufferedImage;
import java.io.OutputStream; import java.io.*;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties; import java.util.Properties;
/** /**
* 上传图片到FastDFS * ueditor
*/ */
@Component @Component
public class FastDFSUtils { public class FastDFSUtils {
...@@ -26,15 +30,130 @@ public class FastDFSUtils { ...@@ -26,15 +30,130 @@ public class FastDFSUtils {
FastDFSUtils.dfsFileAccessBasePath = dfsFileAccessBasePath; FastDFSUtils.dfsFileAccessBasePath = dfsFileAccessBasePath;
} }
static { private static final Logger logger = LoggerFactory.getLogger(FastDFSUtils.class);
try {
private static boolean isInit = false;
private static void init() throws Exception {
Properties props = new Properties(); Properties props = new Properties();
final InputStream in = new ClassPathResource("fastdfs-client.properties").getInputStream(); final InputStream in = new ClassPathResource("fastdfs-client.properties").getInputStream();
props.load(in); props.load(in);
ClientGlobal.initByProperties(props); ClientGlobal.initByProperties(props);
} catch (IOException | MyException e) {
e.printStackTrace();
} }
private static TrackerClient getTrackerClient() throws Exception {
if (!isInit) {
init();
isInit = true;
}
return new TrackerClient();
}
private static TrackerServer getTrackerServer() throws Exception {
return getTrackerClient().getConnection();
}
private static StorageClient getStorageClient() throws Exception {
TrackerServer trackerServer = getTrackerServer();
return new StorageClient(trackerServer, null);
}
/**
* 文件方式上传
*/
public static Map<String, Object> uploadFile(File file) {
String fileName = file.getName();
byte[] fileBuff = FileUtil.getBytes(file);
return uploadFile(fileBuff, fileName);
}
/**
* 是否是图片
*/
private static boolean isImage(String fileName) {
return FileTypeUtil.isImageByExtension(fileName);
}
/**
* 字节流方式上传
*/
public static Map<String, Object> uploadFile(byte[] fileBuff, String fileName) {
String originalFileName = FilenameUtils.getName(fileName);// 文件名
String fileExtName = FilenameUtils.getExtension(originalFileName);// 文件后缀名
long length = fileBuff.length;// 字节
boolean isImage = isImage(originalFileName);
String mimeType = FileUtil.getMimeType(fileName);
int width = 0;
int height = 0;
if (isImage) {
int[] imageInfo = getImageInfo(fileBuff);
width = imageInfo[0];
height = imageInfo[1];
}
NameValuePair[] metaList = new NameValuePair[]{new NameValuePair("fileName", fileName),
new NameValuePair("isImage", isImage + ""), new NameValuePair("mimeType", mimeType),
new NameValuePair("width", width + ""), new NameValuePair("height", height + ""),
new NameValuePair("author", "FastdfsUtils")};
boolean status = false;
String message = "文件上传失败!";
logger.info("startTIme:" + (new Date().getMinutes()));
String[] responseData = storeFile(fileBuff, fileExtName, metaList);
logger.info("startTIme:" + (new Date().getMinutes()));
Map<String, Object> uploadResult = new HashMap<String, Object>();
if (responseData != null) {
status = true;
message = "文件上传成功!";
uploadResult.put("isImage", isImage);
if (isImage) {
uploadResult.put("width", width);
uploadResult.put("height", height);
}
uploadResult.put("groupName", responseData[0]);
uploadResult.put("storageFileName", responseData[1]);
uploadResult.put("link", responseData[0] + "/" + responseData[1]);// 文件访问链接
}
uploadResult.put("status", status);
uploadResult.put("message", message);
uploadResult.put("fileName", fileName);
uploadResult.put("mimeType", mimeType);
uploadResult.put("length", length);
return uploadResult;
}
private static int[] getImageInfo(byte[] fileBuff) {
try {
// File转为BufferedImage
// BufferedImage buff = ImageIO.read(new
// FileImageInputStream(file));
// BufferedImage buff = ImageIO.read(file);
// byte[]转为BufferedImage
ByteArrayInputStream in = new ByteArrayInputStream(fileBuff);// 将byte[]作为输入流;
BufferedImage image = ImageIO.read(in);// 将in作为输入流,读取图片存入image中,而这里in可以为ByteArrayInputStream();
int width = image.getWidth();
int height = image.getHeight();
return new int[]{width, height};
} catch (Exception e) {
logger.error("FastdfsUtils.getImageInfo时发生异常:", e);
}
return new int[]{0, 0};
}
private static String[] storeFile(byte[] fileBuff, String fileExtName, NameValuePair[] metaList) {
String[] responseData = null;
try {
StorageClient storageClient = getStorageClient();
responseData = storageClient.upload_file(fileBuff, fileExtName.toLowerCase(), metaList);
} catch (Exception e) {
logger.error("FastdfsUtils.storeFile时发生异常:", e);
}
return responseData;
} }
public static String[] uploadPic(String path, String fileName, long size) { public static String[] uploadPic(String path, String fileName, long size) {
...@@ -78,7 +197,7 @@ public class FastDFSUtils { ...@@ -78,7 +197,7 @@ public class FastDFSUtils {
meta_list[0] = new NameValuePair("fileName", fileName); meta_list[0] = new NameValuePair("fileName", fileName);
meta_list[1] = new NameValuePair("fileExt", extName); meta_list[1] = new NameValuePair("fileExt", extName);
meta_list[2] = new NameValuePair("fileSize", String.valueOf(size)); meta_list[2] = new NameValuePair("fileSize", String.valueOf(size));
fileIds = storageClient.upload_file(null, size, new UploadFileSender(inStream), extName, meta_list); fileIds = storageClient.upload_file(null, size, new FastDFSUtils.UploadFileSender(inStream), extName, meta_list);
return dfsFileAccessBasePath + "/" + fileIds[0] + "/" + fileIds[1]; return dfsFileAccessBasePath + "/" + fileIds[0] + "/" + fileIds[1];
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
......
package cn.wisenergy.chnmuseum.party.common.dfs;
import org.apache.commons.io.FilenameUtils;
import org.csource.common.NameValuePair;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
/**
* ueditor
*/
public class FastdfsUtil {
private static final Logger logger = LoggerFactory.getLogger(FastdfsUtil.class);
private static boolean isInit = false;
private static void init() throws Exception {
Properties props = new Properties();
final InputStream in = new ClassPathResource("fastdfs-client.properties").getInputStream();
props.load(in);
ClientGlobal.initByProperties(props);
}
private static TrackerClient getTrackerClient() throws Exception {
if (!isInit) {
init();
isInit = true;
}
return new TrackerClient();
}
private static TrackerServer getTrackerServer() throws Exception {
return getTrackerClient().getConnection();
}
private static StorageClient getStorageClient() throws Exception {
TrackerServer trackerServer = getTrackerServer();
return new StorageClient(trackerServer, null);
}
/**
* 文件方式上传
*/
public static Map<String, Object> uploadFile(File file) {
String fileName = file.getName();
byte[] fileBuff = FileUtil.getBytes(file);
return uploadFile(fileBuff, fileName);
}
/**
* 是否是图片
*/
private static boolean isImage(String fileName) {
return FileTypeUtil.isImageByExtension(fileName);
}
/**
* 字节流方式上传
*/
public static Map<String, Object> uploadFile(byte[] fileBuff, String fileName) {
String originalFileName = FilenameUtils.getName(fileName);// 文件名
String fileExtName = FilenameUtils.getExtension(originalFileName);// 文件后缀名
long length = fileBuff.length;// 字节
boolean isImage = isImage(originalFileName);
String mimeType = FileUtil.getMimeType(fileName);
int width = 0;
int height = 0;
if (isImage) {
int[] imageInfo = getImageInfo(fileBuff);
width = imageInfo[0];
height = imageInfo[1];
}
NameValuePair[] metaList = new NameValuePair[]{new NameValuePair("fileName", fileName),
new NameValuePair("isImage", isImage + ""), new NameValuePair("mimeType", mimeType),
new NameValuePair("width", width + ""), new NameValuePair("height", height + ""),
new NameValuePair("author", "FastdfsUtils")};
boolean status = false;
String message = "文件上传失败!";
logger.info("startTIme:" + (new Date().getMinutes()));
String[] responseData = storeFile(fileBuff, fileExtName, metaList);
logger.info("startTIme:" + (new Date().getMinutes()));
Map<String, Object> uploadResult = new HashMap<String, Object>();
if (responseData != null) {
status = true;
message = "文件上传成功!";
uploadResult.put("isImage", isImage);
if (isImage) {
uploadResult.put("width", width);
uploadResult.put("height", height);
}
uploadResult.put("groupName", responseData[0]);
uploadResult.put("storageFileName", responseData[1]);
uploadResult.put("link", responseData[0] + "/" + responseData[1]);// 文件访问链接
}
uploadResult.put("status", status);
uploadResult.put("message", message);
uploadResult.put("fileName", fileName);
uploadResult.put("mimeType", mimeType);
uploadResult.put("length", length);
return uploadResult;
}
private static int[] getImageInfo(byte[] fileBuff) {
try {
// File转为BufferedImage
// BufferedImage buff = ImageIO.read(new
// FileImageInputStream(file));
// BufferedImage buff = ImageIO.read(file);
// byte[]转为BufferedImage
ByteArrayInputStream in = new ByteArrayInputStream(fileBuff);// 将byte[]作为输入流;
BufferedImage image = ImageIO.read(in);// 将in作为输入流,读取图片存入image中,而这里in可以为ByteArrayInputStream();
int width = image.getWidth();
int height = image.getHeight();
return new int[]{width, height};
} catch (Exception e) {
logger.error("FastdfsUtils.getImageInfo时发生异常:", e);
}
return new int[]{0, 0};
}
private static String[] storeFile(byte[] fileBuff, String fileExtName, NameValuePair[] metaList) {
String[] responseData = null;
try {
StorageClient storageClient = getStorageClient();
responseData = storageClient.upload_file(fileBuff, fileExtName.toLowerCase(), metaList);
} catch (Exception e) {
logger.error("FastdfsUtils.storeFile时发生异常:", e);
}
return responseData;
}
}
...@@ -5,7 +5,7 @@ import com.baidu.ueditor.define.BaseState; ...@@ -5,7 +5,7 @@ import com.baidu.ueditor.define.BaseState;
import com.baidu.ueditor.define.MultiState; import com.baidu.ueditor.define.MultiState;
import com.baidu.ueditor.define.State; import com.baidu.ueditor.define.State;
import com.baidu.ueditor.extend.UeditorService; import com.baidu.ueditor.extend.UeditorService;
import cn.wisenergy.chnmuseum.party.common.dfs.FastdfsUtil; import cn.wisenergy.chnmuseum.party.common.dfs.FastDFSUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -52,7 +52,7 @@ public class UeditorServiceFastdfsImpl implements UeditorService { ...@@ -52,7 +52,7 @@ public class UeditorServiceFastdfsImpl implements UeditorService {
Map<String, Object> uploadResult = null; Map<String, Object> uploadResult = null;
String originalFileName = multipartFile.getOriginalFilename(); String originalFileName = multipartFile.getOriginalFilename();
uploadResult = FastdfsUtil.uploadFile(multipartFile.getBytes(), originalFileName); uploadResult = FastDFSUtils.uploadFile(multipartFile.getBytes(), originalFileName);
// // 文件新路径 // // 文件新路径
// uploadResult = FastdfsUtil.uploadPic(multipartFile.getBytes(), multipartFile.getOriginalFilename(), // uploadResult = FastdfsUtil.uploadPic(multipartFile.getBytes(), multipartFile.getOriginalFilename(),
...@@ -83,7 +83,7 @@ public class UeditorServiceFastdfsImpl implements UeditorService { ...@@ -83,7 +83,7 @@ public class UeditorServiceFastdfsImpl implements UeditorService {
public State saveBinaryFile(byte[] data, String fileName) { public State saveBinaryFile(byte[] data, String fileName) {
State state = null; State state = null;
Map<String, Object> uploadResult = FastdfsUtil.uploadFile(data, fileName); Map<String, Object> uploadResult = FastDFSUtils.uploadFile(data, fileName);
if ((Boolean) uploadResult.get("status")) { if ((Boolean) uploadResult.get("status")) {
state = new BaseState(true); state = new BaseState(true);
state.putInfo("size", uploadResult.get("length").toString()); state.putInfo("size", uploadResult.get("length").toString());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment