Controller层
package cn.yzl.basic.controller;
import cn.yzl.basic.Util.AjaxResult;
import cn.yzl.basic.Util.FastdfsUtil;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
@RestController
@RequestMapping("/fastDfs")
public class FastdfsController {
//上传文件(图片)
//MultipartFile是springMVC中的类
@PostMapping("/upload")
public AjaxResult upload(@RequestParam MultipartFile file){
try {
//获取文件字节数组
byte[] bytes = file.getBytes();
//获取原始的文件名 (我们需要.后缀 .jpg)
String filename = file.getOriginalFilename();
//获取.的位置坐标索引
int i = filename.lastIndexOf(".");
//substring 含头不含尾
String substring = filename.substring(i + 1);
//调用Fastdfs方法 返回一个fastdfs路径
String upload = FastdfsUtil.upload(bytes, substring);
AjaxResult ajaxResult = new AjaxResult();
ajaxResult.setResultObj(upload);
return ajaxResult;
} catch (IOException e) {
e.printStackTrace();
return new AjaxResult(false,"上传文件失败");
}
}
//删除接口
@DeleteMapping()
public AjaxResult del(@RequestParam("path") String path){
try {
String pathTmp = path.substring(1); // goup1/xxxxx/yyyy
String groupName = pathTmp.substring(0, pathTmp.indexOf("/")); //goup1
String remotePath = pathTmp.substring(pathTmp.indexOf("/")+1);// /xxxxx/yyyy
System.out.println(groupName);
System.out.println(remotePath);
FastdfsUtil.delete(groupName,remotePath);
return new AjaxResult();
} catch (Exception e) {
e.printStackTrace();
return new AjaxResult(false,"删除失败!"+e.getMessage());
}
}
}
<!-- fastdfs配置-->
<dependency>
<groupId>cn.bestwu</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.27</version>
</dependency>
<!-- 主要用于发送http请求-->
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
</dependencies>
工具类
fastdfs
package cn.yzl.basic.Util;
import org.csource.common.NameValuePair;
import org.csource.fastdfs.*;
public class FastdfsUtil {
//加载配置文件
public static String CONF_FILENAME = FastdfsUtil.class.getClassLoader() .getResource("fdfs_client.conf").getFile();
/**
* 上传文件
* @param file :byte数组格式的文件内容
* @param extName :文件扩展名
* @return
*/
public static String upload(byte[] file,String extName) {
try {
//初始化配置
ClientGlobal.init(CONF_FILENAME);
//创建Tracker客户端
TrackerClient tracker = new TrackerClient();
TrackerServer trackerServer = tracker.getConnection();
StorageServer storageServer = null;
//创建Storage 客户端
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
//设置而外的参数
/**
NameValuePair nvp [] = new NameValuePair[]{
new NameValuePair("width", "100"),
new NameValuePair("height", "100")
}; **/
//执行上传
String fileIds[] = storageClient.upload_file(file,extName,null);
String path = "/"+fileIds[0]+"/"+fileIds[1];
System.out.println("文件上传成功,path="+path);
return path;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 上传文件
* @param extName
* @return
*/
public static String upload(String path,String extName) {
try {
ClientGlobal.init(CONF_FILENAME);
TrackerClient tracker = new TrackerClient();
TrackerServer trackerServer = tracker.getConnection();
StorageServer storageServer = null;
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
String fileIds[] = storageClient.upload_file(path, extName,null);
System.out.println(fileIds.length);
return "/"+fileIds[0]+"/"+fileIds[1];
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 下载文件
* @param groupName
* @param fileName
* @return
*/
public static byte[] download(String groupName,String fileName) {
try {
ClientGlobal.init(CONF_FILENAME);
TrackerClient tracker = new TrackerClient();
TrackerServer trackerServer = tracker.getConnection();
StorageServer storageServer = null;
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
return storageClient.download_file(groupName, fileName);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 删除文件
* @param groupName
* @param fileName
*/
public static boolean delete(String groupName,String fileName){
try {
ClientGlobal.init(CONF_FILENAME);
TrackerClient tracker = new TrackerClient();
TrackerServer trackerServer = tracker.getConnection();
StorageServer storageServer = null;
StorageClient storageClient = new StorageClient(trackerServer,
storageServer);
int i = storageClient.delete_file(groupName,fileName);
System.out.println( i==0 ? "删除成功" : "删除失败:"+i);
return i == 0;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("删除异常,"+e.getMessage());
}
}
}
使用httpclient组件发送http请求
package cn.yzl.basic.Util;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import java.io.IOException;
/**
* 使用httpclient组件发送http请求
* get:现在只用到get
* post
*/
public class HttpClientUtils {
/**
* 发送get请求
* @param url 请求地址
* @return 返回内容 json
*/
public static String httpGet(String url){
// 1 创建发起请求客户端
try {
HttpClient client = new HttpClient();
// 2 创建要发起请求-tet
GetMethod getMethod = new GetMethod(url);
// getMethod.addRequestHeader("Content-Type",
// "application/x-www-form-urlencoded;charset=UTF-8");
getMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"utf8");
// 3 通过客户端传入请求就可以发起请求,获取响应对象
client.executeMethod(getMethod);
// 4 提取响应json字符串返回
String result = new String(getMethod.getResponseBodyAsString().getBytes("utf8"));
return result;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}