fastdfs 原理与过程

 前言:    
    (1)每次上传文件后都会返回一个地址,用户需要自己保存此地址。
    (2)为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。
    
    其他都可以在网上找到,请到博客是:u013378306上搜寻fastdfs可以找到
    
    **过程:**
    第一步:在pom.xml配依赖
    
        <repositories>
            <repository>
                <id>sn</id>
                <name>sn</name>
                <url>https://oss.sonatype.org/content/repositories/releases/</url>
            </repository>
        </repositories>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
            <dependency>
                <groupId>com.luhuiguo</groupId>
                <artifactId>fastdfs-client</artifactId>
                <version>0.4.0</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            <dependency>
                <groupId>com.luhuiguo</groupId>
                <artifactId>fastdfs-spring-boot-starter</artifactId>
                <version>0.2.0</version>
            </dependency>
        </dependencies>
    
    
      
    
       
    
     
    
         **第二步**配resources
              # application:
            	   server:
            	  port: 8899
            	fdfs:
            	    connect-timeout: 1000
            	    so-timeout: 3000
            	    tracker-list:
            	       - 192.168.211.132:22122
            	spring:
            	  datasource:
            	    url: jdbc:mysql://localhost/xuesheng
            	    password: 123456
            	    driver-class-name: com.mysql.jdbc.Driver
            	    username: root
            	  http:
            	    multipart:
            	      max-file-size: 10485760
            ##static(好扫描到)   
               ****上传****
            <body>
            	 <form method="post" action="uploadd" enctype="multipart/form-data"><!--必须要这enctype="multipart/form-data"才能提交-->
            	    文件:<input type="file" name="myFile">
            	    <input type="submit" value="上传"/>
            	 </form>
            </body>
            </html>
            **下载**
            <body>
            	<a href="ssd/1">下载</a>
            </body>
           
    
          ****第三步**main方法**
         	// UoloadMain:
             @SpringBootApplication
            public class UoloadMain {
                public static void main(String[] args) {
                    SpringApplication.run(UoloadMain.class);
                }
            }
            //UploadController:
            @RestController
            public class UploadController {
            	    @Autowired
            	    protected FastFileStorageClient storageClient;
            	    @Autowired
            	    JdbcTemplate jdbcTemplate;
            	    @PostMapping("/uploadd")
            	 public String upload(@RequestParam("myFile") MultipartFile myFile) throws IOException {
            		     String  sd= FilenameUtils.getExtension(myFile.getOriginalFilename());
            		    StorePath ss=storageClient.uploadFile("group1",myFile.getInputStream(),myFile.getSize(),sd);
            		    String sql="insert into mydb(filename,groupName,filePath)values(?,?,?)";
            		     jdbcTemplate.update(sql,myFile.getOriginalFilename(),ss.getGroup(),ss.getPath());
            		    return ss.getFullPath();
                }
                //下载
                @GetMapping("/ssd/{id}")
                public void downiupload(@PathVariable String id, HttpServletResponse response) throws IOException {
                    List list=jdbcTemplate.query("select * from mydb where fileid="+id,new ColumnMapRowMapper());
            
                    Map map= (Map) list.get(0);
                     String fileName=URLEncoder.encode( map.get("filename").toString(),"UTF-8");
                    String groupName=map.get("groupName").toString();
                    String filePath=map.get("filePath").toString();
            
                     //告诉浏览器下载的文件名
                    response.setHeader("Content-Disposition","attachment; filename="+fileName+"");
                    //将文件名输出到浏览器
                  byte[] bt=storageClient.downloadFile(groupName,filePath);
                    response.getOutputStream().write(bt);
                }
            } 

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值