前言:
(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);
}
}
fastdfs 原理与过程
最新推荐文章于 2025-01-07 14:24:25 发布