参考博客:http://www.javaboy.org/2020/0301/fastdfs.html
参考博客先搭建好文件管理系统
首先配置fastdfs-client.properties文件,这里用官方默认的:
fastdfs.connect_timeout_in_seconds = 5
fastdfs.network_timeout_in_seconds = 30
fastdfs.charset = UTF-8
fastdfs.http_anti_steal_token = false
#密钥
fastdfs.http_secret_key = FastDFS1234567890
fastdfs.http_tracker_http_port = 80
#nginx中的地址
fastdfs.tracker_servers = 192.168.1.140:22122
fastdfs.connection_pool.enabled = true
fastdfs.connection_pool.max_count_per_entry = 500
fastdfs.connection_pool.max_idle_time = 3600
fastdfs.connection_pool.max_wait_time_in_ms = 1000
public class FastDfsUtil {
private static StorageClient1 client1;
static {
try {
ClientGlobal.initByProperties("fastdfs-client.properties");
TrackerClient trackerClient = new TrackerClient();
TrackerServer trackerServer = trackerClient.getConnection();
client1 = new StorageClient1(trackerServer,null);
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
}
}
//上传文件获取图片存放地址
public static String getFileId(MultipartFile file){
String oldName = file.getOriginalFilename();
try {
return client1.upload_file1(file.getBytes(),oldName.substring(oldName.lastIndexOf(".")+1),null);
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
}
return null;
}
}
/**
* 修改头像
*/
@RequestMapping("/updateUserFace")
public RespBean updateUserFace(MultipartFile file, Integer id, Authentication authentication) {
int ts = (int) Instant.now().getEpochSecond();
//这里获取的fileId中带有group1,需要把它去掉,含义在参考博客中有提到
String fileId = FastDfsUtil.getFileId(file);
String url = null;
try {
String token = ProtoCommon.getToken(fileId.substring(fileId.indexOf("/")+1), ts, "FastDFS1234567890");
url = nginxHost+fileId+"?token=" + token + "&ts=" + ts;
System.out.println(url);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
}
}
}
通过这些可以获取通过上传后的图片访问路径