140 lines
4.3 KiB
Java
140 lines
4.3 KiB
Java
/*
|
||
* To change this license header, choose License Headers in Project Properties.
|
||
* To change this template file, choose Tools | Templates
|
||
* and open the template in the editor.
|
||
*/
|
||
package com.ifish.helper;
|
||
|
||
import com.ifish.util.IfishFilePath;
|
||
import com.ifish.util.IfishUtil;
|
||
import org.apache.commons.lang3.StringUtils;
|
||
import org.csource.fastdfs.ClientGlobal;
|
||
import org.csource.fastdfs.StorageClient1;
|
||
import org.csource.fastdfs.StorageServer;
|
||
import org.csource.fastdfs.TrackerClient;
|
||
import org.csource.fastdfs.TrackerServer;
|
||
import org.springframework.stereotype.Component;
|
||
import org.springframework.web.multipart.MultipartFile;
|
||
|
||
@Component
|
||
public class FastDFSClient implements FastDFSClientI {
|
||
|
||
private TrackerClient trackerClient = null;
|
||
private TrackerServer trackerServer = null;
|
||
private StorageServer storageServer = null;
|
||
//使用StorageClient1进行上传
|
||
private StorageClient1 storageClient1 = null;
|
||
|
||
public FastDFSClient() throws Exception {
|
||
//获取classpath路径下配置文件"fdfs_client.conf"的路径
|
||
//conf直接写相对于classpath的位置,不需要写classpath:
|
||
String conf = "";
|
||
if (IfishFilePath.link_img_head.contains("ifish7")) {
|
||
conf = "fdfs_client_ifish7.conf";
|
||
} else {
|
||
conf = "fdfs_client_zhangxinyanv5.conf";
|
||
}
|
||
|
||
String configPath = this.getClass().getClassLoader().getResource(conf).getFile();
|
||
System.out.println(configPath);
|
||
ClientGlobal.init(configPath);
|
||
|
||
trackerClient = new TrackerClient();
|
||
trackerServer = trackerClient.getConnection();
|
||
storageServer = trackerClient.getStoreStorage(trackerServer);
|
||
storageClient1 = new StorageClient1(trackerServer, storageServer);
|
||
}
|
||
|
||
/**
|
||
* 上传一个字节型文件
|
||
*
|
||
* @param file_buff 字节数组
|
||
* @param file_ext_name 文件后缀
|
||
* @return
|
||
* @throws Exception
|
||
*/
|
||
@Override
|
||
public String uploadFile(byte[] file_buff, String file_ext_name) throws Exception {
|
||
|
||
String result = "";
|
||
|
||
try {
|
||
result = storageClient1.upload_file1(file_buff, file_ext_name, null);
|
||
} catch (Exception e) {
|
||
try {
|
||
result = storageClient1.upload_file1(file_buff, file_ext_name, null);
|
||
} catch (Exception a) {
|
||
return "";
|
||
}
|
||
}
|
||
|
||
return result;
|
||
}
|
||
|
||
/**
|
||
* 上传一个本地文件
|
||
*
|
||
* @param local_filename 本地文件名(路径+文件名+后缀)
|
||
* @param file_ext_name 文件后缀
|
||
* @return
|
||
* @throws Exception
|
||
*/
|
||
@Override
|
||
public String uploadFile(String local_filename, String file_ext_name) throws Exception {
|
||
|
||
String result = storageClient1.upload_file1(local_filename, file_ext_name, null);
|
||
|
||
return result;
|
||
}
|
||
|
||
/**
|
||
* 上传一个文件
|
||
*
|
||
* @param group_name 指定位置
|
||
* @param local_filename 本地文件名(路径+文件名+后缀)
|
||
* @param file_ext_name 文件后缀
|
||
* @return
|
||
* @throws Exception
|
||
*/
|
||
@Override
|
||
public String uploadFile(String group_name, String local_filename, String file_ext_name) throws Exception {
|
||
|
||
String result = storageClient1.upload_file1(group_name, local_filename, file_ext_name, null);
|
||
|
||
return result;
|
||
}
|
||
|
||
public String getFileType(MultipartFile file) {
|
||
String[] allowTypes = new String[]{".mp4", ".png", ".jpg", ".bmp"};
|
||
String filename = file.getOriginalFilename();
|
||
if (StringUtils.isNotBlank(filename)) {
|
||
for (String allowType : allowTypes) {
|
||
if (filename.contains(allowType)) {
|
||
return allowType.replace(".", "");
|
||
}
|
||
}
|
||
}
|
||
return "";
|
||
}
|
||
|
||
@Override
|
||
public String uploadFileToFastDFS(MultipartFile file) {
|
||
try {
|
||
String type = getFileType(file);
|
||
if (StringUtils.isBlank(type)) {
|
||
return null;
|
||
}
|
||
byte[] bt = file.getBytes();
|
||
String url = uploadFile(bt, type);
|
||
if (url.contains("group1/M00/")) {
|
||
url = url.replace("group1/M00/", "");
|
||
} else {
|
||
return "";
|
||
}
|
||
return IfishFilePath.link_img_head + url;
|
||
} catch (Exception e) {
|
||
return "";
|
||
}
|
||
}
|
||
}
|