Java调用FastDFS
导入pom依赖
<dependencies>
<dependency>
<groupId>net.oschina.zcx7878</groupId>
<artifactId>fastdfs-client-java</artifactId>
</dependency>
</dependencies>
在项目resource中添加tracker.conf 配置文件
tracker_server=192.168.200.128:22122
# 连接超时时间,针对socket套接字函数connect,默认为30秒
connect_timeout=30000
# 网络通讯超时时间,默认是60秒
network_timeout=60000
实现流程
1 读取配置文件 > 2 创建tracker连接 > 3 根据tracker创建storage连接 > 4 上传文件
常用的两个上传方法:
- 参数为字符串的是给了上传文件所在路径
- 参数为byte[]数组的需要上传的文件流已经加载了
代码
package com.atguigu.gmall.product.controller;
import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.product.test.TestDfs;
import org.apache.commons.io.FilenameUtils;
import org.csource.common.MyException;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
@RestController
@RequestMapping("admin/product/")
@CrossOrigin
public class FileUploadController {
@RequestMapping("fileUpload")
private static Result<String> fileUpload(MultipartFile file) throws IOException, MyException {
// 读取配置文件
String path = FileUploadController.class.getClassLoader().getResource("tracker.conf").getPath();
ClientGlobal.init(path);
// 创建tracker连接
TrackerClient trackerClient = new TrackerClient();
TrackerServer connection = trackerClient.getConnection();
// 创建storage
StorageClient storageClient = new StorageClient(connection,null);
// 上传文件
String originalFilename = file.getOriginalFilename();
// int i = originalFilename.lastIndexOf(".");
// String substring = originalFilename.substring(i);
String extension = FilenameUtils.getExtension(originalFilename);
String[] jpgs = storageClient.upload_file(file.getBytes(), extension, null);
String imageUrl = "http://192.168.222.2:8080";
for (String jpg : jpgs) {
imageUrl = imageUrl + "/" + jpg;
}
return Result.ok(imageUrl);
}
}