基于SpringBoot实现上传2种方法工程代码实例
创建SpringBoot工程:
再导入所需要的依赖:
net.oschina.zcx7878 fastdfs-client-java 1.27.0.0 org.apache.commons commons-lang3
创建上传业务层程序:
packagecn.dzz.fastdfs.service;
importorg.apache.commons.lang3.StringUtils;
importorg.csource.fastdfs.*;
importorg.springframework.beans.factory.annotation.Value;
importorg.springframework.stereotype.Component;
importorg.springframework.web.multipart.MultipartFile;
importjava.util.HashMap;
importjava.util.Map;
/**
*@authorDaiZhiZhou
*@fileBoot-With-FastDFS
*@create2020-08-138:55
*/
//@PropertySource()
@Component
publicclassUploadService{
@Value("${fastdfs.tracker_servers}")
privateStringtracker_servers;
@Value("${fastdfs.connect_timeout_in_seconds}")
privateintconnect_timeout;
@Value("${fastdfs.network_timeout_in_seconds}")
privateintnetwork_timeout;
@Value("${fastdfs.charset}")
privateStringcharset;
publicMapupload(MultipartFilemultipartFile){
if(multipartFile==null){
thrownewRuntimeException("文件不能为空");
}
//上传至fastDFS,返回文件id
StringfileId=this.fdfsUpload(multipartFile);
if(StringUtils.isEmpty(fileId)){
System.out.println("上传失败");
thrownewRuntimeException("上传失败");
}
Mapmap=newHashMap<>();
map.put("code",200);
map.put("msg","上传成功");
map.put("fileId",fileId);
returnmap;
}
/**
*上传至fastDFS
*@parammultipartFile
*@return文件id
*/
privateStringfdfsUpload(MultipartFilemultipartFile){
//1.初始化fastDFS的环境
initFdfsConfig();
//2.获取trackerClient服务
TrackerClienttrackerClient=newTrackerClient();
try{
TrackerServertrackerServer=trackerClient.getConnection();
//3.获取storage服务
StorageServerstoreStorage=trackerClient.getStoreStorage(trackerServer);
//4.获取storageClient
StorageClient1storageClient1=newStorageClient1(trackerServer,storeStorage);
//5.上传文件(文件字节,文件扩展名,)
//5.1获取文件扩展名
StringoriginalFilename=multipartFile.getOriginalFilename();
StringextName=originalFilename.substring(originalFilename.lastIndexOf(".")+1);
//5.2上传
StringfileId=storageClient1.upload_file1(multipartFile.getBytes(),extName,null);
returnfileId;
}catch(Exceptione){
System.out.println(e);
returnnull;
}
}
/**
*初始化fastDFS的环境
*/
privatevoidinitFdfsConfig(){
try{
ClientGlobal.initByTrackers(tracker_servers);
ClientGlobal.setG_connect_timeout(connect_timeout);
ClientGlobal.setG_network_timeout(network_timeout);
ClientGlobal.setG_charset(charset);
}catch(Exceptione){
System.out.println(e);
}
}
}
创建上传控制器:
packagecn.dzz.fastdfs.controller;
importcn.dzz.fastdfs.service.UploadService;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.stereotype.Controller;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.multipart.MultipartFile;
importjava.util.Map;
/**
*@authorDaiZhiZhou
*@fileBoot-With-FastDFS
*@create2020-08-138:58
*/
@RestController
@RequestMapping("upload")
publicclassUploadController{
@Autowired
privateUploadServiceuploadService;
/**
*作上传
*/
@RequestMapping("doUpload")
publicMapdoUpload(MultipartFilemf){
System.out.println(mf.getOriginalFilename());
Mapmap=uploadService.upload(mf);
returnmap;
}
}
在static目录中创建index.html用于上传测试:
Title 文件上传