由于最近有一个需求:要求前端聊天时发送的语音文件(base64)到后端,转换成音频文件,并保存到文件服务器,并且能通过地址直接访问。所以本文优先说一下springboot集成fastdfs客户端并实现文件的上传。
1.首先引入客户端jar包(目前失眠岸上引入的jar包大体分成两个,综合考虑维护性和springboot项目特点选取这个)
2.配置类
3.配置文件(模糊的地方大家填上自己服务端设置的地址)
4.工具类(为了方便大家直接贴代码)
**
* Fastdfs工具类
*/
@Component
public class FastdfsClientUtil {
@Value("${fdfs.reqHost}")
private String reqHost;
@Value("${fdfs.reqPort}")
private String reqPort;
@Autowired
private FastFileStorageClient storageClient;
@Autowired
private ThumbImageConfig thumbImageConfig; //创建缩略图 , 缩略图访问有问题,暂未解决
public String uploadFile(MultipartFile file) throws IOException {
StorePath storePath = storageClient.uploadFile((InputStream)file.getInputStream(),file.getSize(), FilenameUtils.getExtension(file.getOriginalFilename()),null);
String path = thumbImageConfig.getThumbImagePath(storePath.getPath()) ;
System.out.println("thumbImage :" + path); // 缩略图访问有问题,暂未解决
return getResAccessUrl(storePath);
}
public void delFile(String groupName , String path) {
storageClient.deleteFile(path);
}
public InputStream download(String groupName, String path ) {
InputStream ins = storageClient.downloadFile(groupName, path, new DownloadCallback<InputStream>(){
@Override
public InputStream recv(InputStream ins) throws IOException {
// 将此ins返回给上面的ins
return ins;
}}) ;
return ins ;
}
/**
* 封装文件完整URL地址
* @param storePath
* @return
*/
private String getResAccessUrl(StorePath storePath) {
String fileUrl = "http://" + reqHost + ":" + reqPort + "/" + storePath.getFullPath();
return fileUrl;
}
}
5.后面直接就可以使用了(验证过没问题哈)怎么转换成byte[]这个大家应该没有问题