Commit 42dafa18 authored by liqin's avatar liqin 💬

bug fixed

parent 03e3d5ee
...@@ -4,152 +4,152 @@ import org.apache.commons.io.FilenameUtils; ...@@ -4,152 +4,152 @@ import org.apache.commons.io.FilenameUtils;
import org.csource.common.MyException; 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.springframework.core.io.ClassPathResource;
import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.Properties;
/** /**
* 上传图片到FastDFS * 上传图片到FastDFS
*/ */
public class FastDFSUtils { public class FastDFSUtils {
static { static {
try { try {
ClientGlobal.initByProperties(FastDFSUtils.class.getClassLoader().getResource("fastdfs-client.properties").getPath()); Properties props = new Properties();
} catch (FileNotFoundException e) { final InputStream in = new ClassPathResource("fastdfs-client.properties").getInputStream();
e.printStackTrace(); props.load(in);
} catch (IOException e) { ClientGlobal.initByProperties(props);
e.printStackTrace(); } catch (IOException | MyException e) {
} catch (MyException e) { e.printStackTrace();
e.printStackTrace(); }
} }
}
public static String[] uploadPic(String path, String fileName, long size) {
public static String[] uploadPic(String path, String fileName, long size) { String[] fileIds = null;
String[] fileIds = null; try {
try { // ClientGloble 读配置文件
// ClientGloble 读配置文件 // 老大客户端
// 老大客户端 TrackerClient trackerClient = new TrackerClient();
TrackerClient trackerClient = new TrackerClient(); TrackerServer trackerServer = trackerClient.getConnection();
TrackerServer trackerServer = trackerClient.getConnection(); StorageServer storageServer = null;
StorageServer storageServer = null; StorageClient storageClient = new StorageClient(trackerServer, storageServer);
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
String extName = FilenameUtils.getExtension(fileName);
String extName = FilenameUtils.getExtension(fileName);
NameValuePair[] meta_list = new NameValuePair[3];
NameValuePair[] meta_list = new NameValuePair[3]; 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));
// http://172.16.15.244:8081/group1/M00/00/00/rBAP9FfFG62AZsuBAADeW7MfEHA287.png
// http://172.16.15.244:8081/group1/M00/00/00/rBAP9FfFG62AZsuBAADeW7MfEHA287.png // group1/M00/00/01/wKjIgFWOYc6APpjAAAD-qk29i78248.jpg
// group1/M00/00/01/wKjIgFWOYc6APpjAAAD-qk29i78248.jpg fileIds = storageClient.upload_file(path, extName, meta_list);
fileIds = storageClient.upload_file(path, extName, meta_list); } catch (Exception e) {
} catch (Exception e) { e.printStackTrace();
e.printStackTrace(); }
} return fileIds;
return fileIds; }
}
public static String[] uploadPic(InputStream inStream, String fileName, long size) {
public static String[] uploadPic(InputStream inStream, String fileName, long size) { String[] fileIds = null;
String[] fileIds = null; try {
try { // ClientGloble 读配置文件
// ClientGloble 读配置文件 // 老大客户端
// 老大客户端 TrackerClient trackerClient = new TrackerClient();
TrackerClient trackerClient = new TrackerClient(); TrackerServer trackerServer = trackerClient.getConnection();
TrackerServer trackerServer = trackerClient.getConnection(); StorageServer storageServer = null;
StorageServer storageServer = null; StorageClient storageClient = new StorageClient(trackerServer, storageServer);
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
String extName = FilenameUtils.getExtension(fileName);
String extName = FilenameUtils.getExtension(fileName);
NameValuePair[] meta_list = new NameValuePair[3];
NameValuePair[] meta_list = new NameValuePair[3]; 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));
// http://172.16.15.244:8081/group1/M00/00/00/rBAP9FfFG62AZsuBAADeW7MfEHA287.png
// http://172.16.15.244:8081/group1/M00/00/00/rBAP9FfFG62AZsuBAADeW7MfEHA287.png // group1/M00/00/01/wKjIgFWOYc6APpjAAAD-qk29i78248.jpg
// group1/M00/00/01/wKjIgFWOYc6APpjAAAD-qk29i78248.jpg fileIds = storageClient.upload_file(null, size, new UploadFileSender(inStream), extName, meta_list);
fileIds = storageClient.upload_file(null, size, new UploadFileSender(inStream), extName, meta_list); } catch (Exception e) {
} catch (Exception e) { e.printStackTrace();
e.printStackTrace(); }
} return fileIds;
return fileIds; }
}
public static String uploadPic(byte[] pic, String fileName, long size) {
public static String uploadPic(byte[] pic, String fileName, long size) { String[] fileIds = null;
String[] fileIds = null; try {
try { // ClientGloble 读配置文件
// ClientGloble 读配置文件 // 老客户端
// 老客户端 TrackerClient trackerClient = new TrackerClient();
TrackerClient trackerClient = new TrackerClient(); TrackerServer trackerServer = trackerClient.getConnection();
TrackerServer trackerServer = trackerClient.getConnection(); StorageServer storageServer = null;
StorageServer storageServer = null; StorageClient storageClient = new StorageClient(trackerServer, storageServer);
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
String extName = FilenameUtils.getExtension(fileName);
String extName = FilenameUtils.getExtension(fileName); // 设置图片meta信息
// 设置图片meta信息 NameValuePair[] meta_list = new NameValuePair[3];
NameValuePair[] meta_list = new NameValuePair[3]; 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)); // 上传且返回path
// 上传且返回path fileIds = storageClient.upload_file(pic, extName, meta_list);
fileIds = storageClient.upload_file(pic, extName, meta_list); return fileIds[0] + "/" + fileIds[1];
return fileIds[0] + "/" + fileIds[1]; } catch (Exception e) {
} catch (Exception e) { e.printStackTrace();
e.printStackTrace(); }
} return null;
return null; }
}
public static boolean deletePic(String fileUrl) {
public static boolean deletePic(String fileUrl) { try {
try { TrackerClient tracker = new TrackerClient();
TrackerClient tracker = new TrackerClient(); TrackerServer trackerServer = tracker.getConnection();
TrackerServer trackerServer = tracker.getConnection(); StorageServer storageServer = null;
StorageServer storageServer = null; StorageClient storageClient = new StorageClient(trackerServer, storageServer);
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
StorePath storePath = StorePath.praseFromUrl(fileUrl);
StorePath storePath = StorePath.praseFromUrl(fileUrl); int i = storageClient.delete_file(storePath.getGroup(), storePath.getPath());
int i = storageClient.delete_file(storePath.getGroup(), storePath.getPath()); System.out.println(i == 0 ? "删除成功" : "删除失败:" + i);
System.out.println(i == 0 ? "删除成功" : "删除失败:" + i); return i == 0;
return i == 0; } catch (Exception e) {
} catch (Exception e) { e.printStackTrace();
e.printStackTrace(); }
} return false;
return false; }
}
public static String deletePic(String[] fileIds) {
public static String deletePic(String[] fileIds) { try {
try { TrackerClient tracker = new TrackerClient();
TrackerClient tracker = new TrackerClient(); TrackerServer trackerServer = tracker.getConnection();
TrackerServer trackerServer = tracker.getConnection(); StorageServer storageServer = null;
StorageServer storageServer = null; StorageClient storageClient = new StorageClient(trackerServer, storageServer);
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
int i = storageClient.delete_file(fileIds[0], fileIds[1]);
int i = storageClient.delete_file(fileIds[0], fileIds[1]); System.out.println(i == 0 ? "删除成功" : "删除失败:" + i);
System.out.println(i == 0 ? "删除成功" : "删除失败:" + i); } catch (Exception e) {
} catch (Exception e) { e.printStackTrace();
e.printStackTrace(); }
} return fileIds[1];
return fileIds[1]; }
}
private static class UploadFileSender implements UploadCallback {
private static class UploadFileSender implements UploadCallback { private InputStream inStream;
private InputStream inStream;
public UploadFileSender(InputStream inStream) {
public UploadFileSender(InputStream inStream) { this.inStream = inStream;
this.inStream = inStream; }
}
public int send(OutputStream out) throws IOException {
public int send(OutputStream out) throws IOException { int readBytes;
int readBytes; while ((readBytes = inStream.read()) > 0) {
while ((readBytes = inStream.read()) > 0) { out.write(readBytes);
out.write(readBytes); }
} return 0;
return 0; }
} }
}
} }
\ No newline at end of file
package cn.wisenergy.chnmuseum.party.common.dfs; 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.awt.image.BufferedImage;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.File; import java.io.File;
import java.io.InputStream;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Date; import java.util.Properties;
import javax.imageio.ImageIO;
import org.apache.commons.io.FilenameUtils;
import org.csource.common.NameValuePair;
import org.csource.fastdfs.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** /**
* ueditor * ueditor
*/ */
public class FastdfsUtil { public class FastdfsUtil {
private static final Logger logger = LoggerFactory.getLogger(FastdfsUtil.class); private static final Logger logger = LoggerFactory.getLogger(FastdfsUtil.class);
private static boolean isInit = false; private static boolean isInit = false;
private static void init() throws Exception { private static void init() throws Exception {
String classPath = new File(FastdfsUtil.class.getResource("/").getFile()).getCanonicalPath(); Properties props = new Properties();
String configFilePath = classPath + File.separator + "fastdfs-client.properties"; final InputStream in = new ClassPathResource("fastdfs-client.properties").getInputStream();
logger.info("FastdfsUtils.init加载配置文件:" + configFilePath); props.load(in);
ClientGlobal.initByProperties(configFilePath); ClientGlobal.initByProperties(props);
} }
private static TrackerClient getTrackerClient() throws Exception { private static TrackerClient getTrackerClient() throws Exception {
if (!isInit) { if (!isInit) {
init(); init();
isInit = true; isInit = true;
} }
return new TrackerClient();
TrackerClient trackerClient = new TrackerClient(); }
return trackerClient;
} private static TrackerServer getTrackerServer() throws Exception {
return getTrackerClient().getConnection();
private static TrackerServer getTrackerServer() throws Exception { }
return getTrackerClient().getConnection();
} private static StorageClient getStorageClient() throws Exception {
TrackerServer trackerServer = getTrackerServer();
private static StorageClient getStorageClient() throws Exception { return new StorageClient(trackerServer, null);
TrackerServer trackerServer = getTrackerServer(); }
// StorageServer storageServer = null; /**
// StorageClient storageClient = new StorageClient(trackerServer, * 文件方式上传
// storageServer); */
StorageClient storageClient = new StorageClient(trackerServer, null); public static Map<String, Object> uploadFile(File file) {
return storageClient; String fileName = file.getName();
} byte[] fileBuff = FileUtil.getBytes(file);
return uploadFile(fileBuff, fileName);
/** }
* 文件方式上传
*/ /**
public static Map<String, Object> uploadFile(File file) { * 是否是图片
String fileName = file.getName(); */
byte[] fileBuff = FileUtil.getBytes(file); private static boolean isImage(String fileName) {
return uploadFile(fileBuff, fileName); return FileTypeUtil.isImageByExtension(fileName);
} }
/** /**
* 是否是图片 * 字节流方式上传
*/ */
private static boolean isImage(String fileName) { public static Map<String, Object> uploadFile(byte[] fileBuff, String fileName) {
return FileTypeUtil.isImageByExtension(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;
public static Map<String, Object> uploadFile(byte[] fileBuff, String fileName) { int height = 0;
String originalFileName = FilenameUtils.getName(fileName);// 文件名 if (isImage) {
String fileExtName = FilenameUtils.getExtension(originalFileName);// 文件后缀名 int[] imageInfo = getImageInfo(fileBuff);
long length = fileBuff.length;// 字节 width = imageInfo[0];
boolean isImage = isImage(originalFileName); height = imageInfo[1];
String mimeType = FileUtil.getMimeType(fileName); }
int width = 0;
int height = 0; NameValuePair[] metaList = new NameValuePair[]{new NameValuePair("fileName", fileName),
if (isImage) { new NameValuePair("isImage", isImage + ""), new NameValuePair("mimeType", mimeType),
int[] imageInfo = getImageInfo(fileBuff); new NameValuePair("width", width + ""), new NameValuePair("height", height + ""),
if (imageInfo != null) { new NameValuePair("author", "FastdfsUtils")};
width = imageInfo[0]; boolean status = false;
height = imageInfo[1]; String message = "文件上传失败!";
} logger.info("startTIme:" + (new Date().getMinutes()));
} String[] responseData = storeFile(fileBuff, fileExtName, metaList);
logger.info("startTIme:" + (new Date().getMinutes()));
NameValuePair[] metaList = new NameValuePair[] { new NameValuePair("fileName", fileName),
new NameValuePair("isImage", isImage + ""), new NameValuePair("mimeType", mimeType),
new NameValuePair("width", width + ""), new NameValuePair("height", height + ""), Map<String, Object> uploadResult = new HashMap<String, Object>();
new NameValuePair("author", "FastdfsUtils") }; if (responseData != null) {
boolean status = false; status = true;
String message = "文件上传失败!"; message = "文件上传成功!";
logger.info("startTIme:" + (new Date().getMinutes())); uploadResult.put("isImage", isImage);
String[] responseData = storeFile(fileBuff, fileExtName, metaList); if (isImage) {
logger.info("startTIme:" + (new Date().getMinutes())); uploadResult.put("width", width);
uploadResult.put("height", height);
}
Map<String, Object> uploadResult = new HashMap<String, Object>(); uploadResult.put("groupName", responseData[0]);
if (responseData != null) { uploadResult.put("storageFileName", responseData[1]);
status = true; uploadResult.put("link", responseData[0] + "/" + responseData[1]);// 文件访问链接
message = "文件上传成功!"; }
uploadResult.put("isImage", isImage);
if (isImage) { uploadResult.put("status", status);
uploadResult.put("width", width); uploadResult.put("message", message);
uploadResult.put("height", height);
} uploadResult.put("fileName", fileName);
uploadResult.put("groupName", responseData[0]); uploadResult.put("mimeType", mimeType);
uploadResult.put("storageFileName", responseData[1]); uploadResult.put("length", length);
uploadResult.put("link", responseData[0] + "/" + responseData[1]);// 文件访问链接
} return uploadResult;
}
uploadResult.put("status", status);
uploadResult.put("message", message); private static int[] getImageInfo(byte[] fileBuff) {
try {
uploadResult.put("fileName", fileName); // File转为BufferedImage
uploadResult.put("mimeType", mimeType); // BufferedImage buff = ImageIO.read(new
uploadResult.put("length", length); // FileImageInputStream(file));
// BufferedImage buff = ImageIO.read(file);
return uploadResult;
} // byte[]转为BufferedImage
ByteArrayInputStream in = new ByteArrayInputStream(fileBuff);// 将byte[]作为输入流;
private static int[] getImageInfo(byte[] fileBuff) { BufferedImage image = ImageIO.read(in);// 将in作为输入流,读取图片存入image中,而这里in可以为ByteArrayInputStream();
try { int width = image.getWidth();
// File转为BufferedImage int height = image.getHeight();
// BufferedImage buff = ImageIO.read(new return new int[]{width, height};
// FileImageInputStream(file)); } catch (Exception e) {
// BufferedImage buff = ImageIO.read(file); logger.error("FastdfsUtils.getImageInfo时发生异常:", e);
}
// byte[]转为BufferedImage return new int[]{0, 0};
ByteArrayInputStream in = new ByteArrayInputStream(fileBuff);// 将byte[]作为输入流; }
BufferedImage image = ImageIO.read(in);// 将in作为输入流,读取图片存入image中,而这里in可以为ByteArrayInputStream();
int width = image.getWidth(); private static String[] storeFile(byte[] fileBuff, String fileExtName, NameValuePair[] metaList) {
int height = image.getHeight(); String[] responseData = null;
return new int[] { width, height }; try {
} catch (Exception e) { StorageClient storageClient = getStorageClient();
logger.error("FastdfsUtils.getImageInfo时发生异常:", e); responseData = storageClient.upload_file(fileBuff, fileExtName.toLowerCase(), metaList);
} } catch (Exception e) {
return new int[] { 0, 0 }; logger.error("FastdfsUtils.storeFile时发生异常:", e);
} }
return responseData;
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;
}
} }
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