spring boot 连接fastDFS

       趁这段假期,好好试着安装一下fastDFS,顺便试试文件的上传与删除,为何要试试这个?鉴于我当前做的那个项目,考虑到,我们把下载任务的异步处理,放到了一个文件夹中,而这个服务是分布式的,而后面的文件查看是集中的,如何解决这个问题?当前是只有一个服务端,所以用一个文件夹中是没有什么问题的。要是分布式下如何对文件进行同步与管理,我问了头头加上我了解的,就是f采用astdfs与nfs这两种,经我自己安装与使用,发现fastdfs比较大,nfs虽好,但是要开启的端口有点多,虽然不复杂,fastdfs相对较少,简单说一下nfs就是把一个主服务器的目录映射到各个客户端,客户端可以就像那个目录,对那个目录进行修改就是对服务器端进行就好,这样是好,但是如果是要用作存储web服务器的各种图片,这个就不太好了,并且端口多,管理比较麻烦,个人之间,所以还是用fastdfs,fastdfs如何安装,我就不写了,百度都有,还要配置一个nginx的服务器做查看图片或者文件下载用,,简单说一些用fastdfs客户端如何实现文件的上传与删除,我用的是spring boot快速实现,所以我也就用的那个fastdfs也是支持spring boot的,先引入jar maven配置:

    <dependency>
      <groupId>com.github.tobato</groupId>
      <artifactId>fastdfs-client</artifactId>
      <version>1.25.2-RELEASE</version>
    </dependency>


下面在application 中加入:

fdfs.soTimeout=1500
fdfs.connectTimeout=600

#下面的两个实说会按150*150把图片会重新压缩一下,这个是程序包帮你做的,你可以配置也可以不配置
fdfs.thumbImage.width=150
fdfs.thumbImage.height=150

#可以有多个
fdfs.trackerList[0]=192.168.137.202:22122

#下面的要有,否者启动表线程池刷新的问题
spring.jmx.enabled= false



如何引入配置:


//这句话就够了,在配置类上
@Import(FdfsClientConfig.class)
@SpringBootApplication
@ComponentScan({"com.ha.controller"})

public class Configure {
    public static void main(String[] args) throws IOException, MyException {
        SpringApplication.run(Configure.class,args);

   }

}

如何上传与删除:

@Controller
public class TestController {
    @Autowired
    public FastFileStorageClient fastFileStorageClient;
    @RequestMapping("upload.do")
    @ResponseBody
    public String uploadImg() throws IOException {


      File file=new File("d://data.png");
        try(
                FileInputStream inputStream=new FileInputStream(file);
                ){
            String fileName=file.getName();
          


            String strs= fileName.substring(fileName.lastIndexOf(".") + 1);  ;
            if(!StringUtils.hasText(strs)){
                return "fail";
            }
            StorePath storePath= fastFileStorageClient.uploadImageAndCrtThumbImage(inputStream,file.length(),strs,null);
            System.out.println("path------"+storePath.getFullPath());
        }




      return "success";
    }


    @RequestMapping("delete.do")
    @ResponseBody
    public String deleteImg(){
        fastFileStorageClient.deleteFile("group1/M00/00/00/wKiJylksOiiAUWV3AABNeUASSJQ019_150x150.png");
        return "success";
    }


}

这样就搞定了,是不是感觉简单了。

    在梦想的路上,尝试与探索。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
Spring Boot可以很方便地与FastDFS进行整合,实现文件上传和下载的功能。 首先,需要在pom.xml文件中添加FastDFS的依赖: ``` <dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>1.27.2</version> </dependency> ``` 然后,在application.properties文件中配置FastDFS连接信息: ``` fdfs.tracker-list=192.168.1.100:22122,192.168.1.101:22122 ``` 接着,创建一个FastDFS的配置类: ``` @Configuration public class FastDFSConfig { @Value("${fdfs.tracker-list}") private String trackerList; @Bean public DefaultTrackerClient defaultTrackerClient() { return new DefaultTrackerClient(); } @Bean public TrackerClient trackerClient() { return new TrackerClient(); } @Bean public ConnectionPool connectionPool() { ConnectionPool connectionPool = new ConnectionPool(); connectionPool.setTrackerList(trackerList); return connectionPool; } @Bean public FastFileStorageClient fastFileStorageClient() { return new DefaultFastFileStorageClient(); } } ``` 最后,在Controller中实现文件上传和下载的功能: ``` @RestController public class FileController { @Autowired private FastFileStorageClient fastFileStorageClient; @PostMapping("/upload") public String upload(MultipartFile file) throws IOException { StorePath storePath = fastFileStorageClient.uploadFile(file.getInputStream(), file.getSize(), FilenameUtils.getExtension(file.getOriginalFilename()), null); return storePath.getFullPath(); } @GetMapping("/download") public void download(String filePath, HttpServletResponse response) throws IOException { byte[] bytes = fastFileStorageClient.downloadFile(filePath.substring(0, filePath.indexOf("/")), filePath.substring(filePath.indexOf("/") + 1)); response.getOutputStream().write(bytes); } } ``` 这样,就可以实现文件上传和下载的功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值