基于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("上传失败"); } Map map=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()); Map map=uploadService.upload(mf); returnmap; } }
在static目录中创建index.html用于上传测试:
Title 文件上传