日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

fastdfs连接mysql_fastDFS文件上传简单案例

發布時間:2024/10/8 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 fastdfs连接mysql_fastDFS文件上传简单案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基于fastDFS做了一個簡單的文件上傳案例(賊簡陋),文件上傳成功后將文件信息保存到MySQL數據庫中

pom.xml

1

2

3 org.springframework.boot

4 spring-boot-starter-web

5

6

7 org.mybatis.spring.boot

8 mybatis-spring-boot-starter

9 2.0.1

10

11

12

13 mysql

14 mysql-connector-java

15

16

17 net.oschina.zcx7878

18 fastdfs-client-java

19

20

21 org.springframework.boot

22 spring-boot-starter-test

23 test

24

25

26 org.apache.commons

27 commons-io

28

29

springboot啟動類

1 @SpringBootApplication

2 public class FastDFSApplication {

3

4 public static void main(String[] args) {

5 SpringApplication.run(FastDFSApplication.class, args);

6 }

7 }

8

Controller

1 import com.xuecheng.fastdfs.api.UserApi;

2 import com.xuecheng.fastdfs.service.UserService;

3 import org.springframework.beans.factory.annotation.Autowired;

4 import org.springframework.web.bind.annotation.PostMapping;

5 import org.springframework.web.bind.annotation.RequestParam;

6 import org.springframework.web.bind.annotation.RestController;

7 import org.springframework.web.multipart.MultipartFile;

9 import java.util.Map;

10

11 @RestController

12 public class UserController implements UserApi {

13

14 @Autowired

15 UserService userService;

16

17 @Override

18 @PostMapping("/upload")

19 public Map uploadPic(@RequestParam("file") MultipartFile file, String username) {

20 return userService.uploadPic(file, username);

21

22 }

23

24

25 }

26

文件上傳代碼實現部分

這里只寫了文件上傳的實現,文件的的刪除等功能可以通過 storageClient1調用方法實現

實際開發中,根據需要返回的參數和需要存入數據庫的參數可通過封裝實體類傳遞信息

service

1 import com.xuecheng.fastdfs.mapper.UserMapper;

2 import org.csource.fastdfs.*;

3 import org.springframework.beans.factory.annotation.Autowired;

4 import org.springframework.stereotype.Service;

5 import org.springframework.web.multipart.MultipartFile;

6

7 import java.io.IOException;

8 import java.util.HashMap;

9 import java.util.Map;

10

11 @Service

12 public class UserService {

13

14 @Autowired

15 UserMapper userMapper;

16

17 public Map uploadPic(MultipartFile file,String username) {

18 Map map = new HashMap();

19 try {

20 //文件id

21 String fileId = fdfs_upload(file);

22 //文件直接存儲的url

23 String fileUrl = queryFileUrl(fileId);

24 //將文件的fileId和fileUrl存入數據庫,可供后面使用

25 userMapper.saveFileId(username, fileId,fileUrl);

26 map.put(true, fileId);

27 return map;

28 } catch (Exception e) {

29 e.printStackTrace();

30 }

31 map.put(true, "上傳失敗");

32 return map;

33

34 }

35

36

37

38 public String queryFileUrl(String fileId) {

39 StorageClient1 storageClient1 = getstorageClient1();

40 try {

41 FileInfo fileInfo = storageClient1.query_file_info1(fileId);

42 String sourceIpAddr = fileInfo.getSourceIpAddr();

43 return sourceIpAddr + "/" + fileId;

44 } catch (Exception e) {

45 e.printStackTrace();

46 }

47 return null;

48 }

49

50 //上傳文件到fdfs,返回文件id 這里將文件上傳的過程抽取了

51 public String fdfs_upload(MultipartFile file) {

52 try {

53

54 StorageClient1 storageClient1 = getstorageClient1();

55 //上傳文件

56 //文件字節

57 byte[] bytes = file.getBytes();

58 //文件原始名稱

59 String originalFilename = file.getOriginalFilename();

60 //文件擴展名

61 String extName = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);

62 //上傳文件返回文件id

63 String file1 = storageClient1.upload_file1(bytes, extName, null);

64 //返回文件id

65 return file1;

66 } catch (Exception e) {

67 e.printStackTrace();

68 }

69 return null;

70 }

71

72

73 //獲取文件上傳對象storageClient1 這里單獨將此段代碼抽取出來復用

74 public StorageClient1 getstorageClient1() {

75 try {

76 try {

77 //加載fdfs的配置

78 ClientGlobal.initByProperties("fastdfs-client.properties");

79 } catch (IOException e) {

80 throw new RuntimeException("初始化配置文件出錯");

81 }

82 //創建tracker client

83 TrackerClient trackerClient = new TrackerClient();

84 //獲取trackerServer

85 TrackerServer trackerServer = trackerClient.getConnection();

86 //獲取storage

87 StorageServer storeStorage = trackerClient.getStoreStorage(trackerServer);

88 //創建storage client

89 StorageClient1 storageClient1 = new StorageClient1(trackerServer,storeStorage);

90 return storageClient1;

91 } catch (Exception e) {

92 throw new RuntimeException("初始化StorageClient1出錯");

93 }

94 }

95 }

96

上面加載的文件上傳的配置文件 fastdfs-client.properties

1 fastdfs.connect_timeout_in_seconds = 5

2 fastdfs.network_timeout_in_seconds = 30

3 fastdfs.charset = UTF-8

4 fastdfs.tracker_servers = 192.168.25.133:22122

5

6 #fastdfs.connect_timeout_in_seconds: http連接超時時間

7 #fastdfs.network_timeout_in_seconds: tracker與storage網絡通信超時時間

8 #fastdfs.charset:字符編碼

9 #fastdfs.tracker_servers:tracker服務器地址,多個地址中間用英文逗號分隔比如=192.168.25.133:22122,192.168.25.134:22122

持久層根據需要填寫,這里做了簡單的保存

配置文件application.yml

1 spring:

2 datasource:

3 driver-class-name: com.mysql.jdbc.Driver

4 url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC

5 username: root

6 password: dacian821

7

8

9 mybatis:

10 type-aliases-package: com.xuecheng.fastdfs.domain

11 mapper-locations: classpath:mapper/*Mapper.xml

usermaper接口

1 @Mapper

2 public interface UserMapper {

3

4 void saveFileId(String username,String fileId,String fileUrl);

5

6 }

usermaper.xml

1 <?xml version="1.0" encoding="utf-8" ?>

2 /p>

3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

4

5

6

7

8

9 update user set fileId=#{fileId},fileUrl=#{fileUrl} where username=#{username}

10

11

12

總結

以上是生活随笔為你收集整理的fastdfs连接mysql_fastDFS文件上传简单案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。