FastDFS相关

所需依赖:

<!-- 文件上传组件 -->
<dependency>
    <groupId>cn.bestwu</groupId>
    <artifactId>fastdfs-client-java</artifactId>
    <version>1.27</version>
</dependency>
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
</dependency>    

 

工具类:

  1 import org.csource.common.NameValuePair;
  2 import org.csource.fastdfs.ClientGlobal;
  3 import org.csource.fastdfs.StorageClient1;
  4 import org.csource.fastdfs.StorageServer;
  5 import org.csource.fastdfs.TrackerClient;
  6 import org.csource.fastdfs.TrackerServer;
  7 
  8 public class FastDFSClient {
  9 
 10     private TrackerClient trackerClient = null;
 11     private TrackerServer trackerServer = null;
 12     private StorageServer storageServer = null;
 13     private StorageClient1 storageClient = null;
 14     
 15     public FastDFSClient(String conf) throws Exception {
 16         if (conf.contains("classpath:")) {
 17             conf = conf.replace("classpath:", this.getClass().getResource("/").getPath());
 18         }
 19         ClientGlobal.init(conf);
 20         trackerClient = new TrackerClient();
 21         trackerServer = trackerClient.getConnection();
 22         storageServer = null;
 23         storageClient = new StorageClient1(trackerServer, storageServer);
 24     }
 25     
 26     /**
 27      * 上传文件方法
 28      * <p>Title: uploadFile</p>
 29      * <p>Description: </p>
 30      * @param fileName 文件全路径
 31      * @param extName 文件扩展名,不包含(.)
 32      * @param metas 文件扩展信息
 33      * @return
 34      * @throws Exception
 35      */
 36     public String uploadFile(String fileName, String extName, NameValuePair[] metas) throws Exception {
 37         String result = storageClient.upload_file1(fileName, extName, metas);
 38         return result;
 39     }
 40     
 41     public String uploadFile(String fileName) throws Exception {
 42         return uploadFile(fileName, null, null);
 43     }
 44     
 45     public String uploadFile(String fileName, String extName) throws Exception {
 46         return uploadFile(fileName, extName, null);
 47     }
 48     
 49     /**
 50      * 上传文件方法
 51      * <p>Title: uploadFile</p>
 52      * <p>Description: </p>
 53      * @param fileContent 文件的内容,字节数组
 54      * @param extName 文件扩展名
 55      * @param metas 文件扩展信息
 56      * @return
 57      * @throws Exception
 58      */
 59     public String uploadFile(byte[] fileContent, String extName, NameValuePair[] metas) throws Exception {
 60         
 61         String result = storageClient.upload_file1(fileContent, extName, metas);
 62         return result;
 63     }
 64     
 65     public String uploadFile(byte[] fileContent) throws Exception {
 66         return uploadFile(fileContent, null, null);
 67     }
 68     
 69     public String uploadFile(byte[] fileContent, String extName) throws Exception {
 70         return uploadFile(fileContent, extName, null);
 71     }
 72     
 73     /**
 74      * 文件下载
 75      * @param filePath 文件地址
 76      * @param savePath 本地保存地址
 77      */
 78     public void download(String filePath,String savePath){
 79         try {
 80             byte[] bytes = storageClient.download_file1(filePath);
 81             IOUtils.write(bytes,new FileOutputStream(savePath));
 82         } catch (Exception e) {
 83             e.printStackTrace();
 84         }
 85     }
 86 
 87     /**
 88      * 文件删除 
 89      * @param filePath 文件的地址
 90      * @return
 91      */
 92     
 93     public Boolean deleteFile(String filePath){
 94         try {
 95             int i = storageClient.delete_file1(filePath);
 96             return i==0;
 97         } catch (Exception e) {
 98             e.printStackTrace();
 99             return false;
100         }
101     }
102 
103     /**
104      * 获取文件信息
105      * @param filePath 文件的地址
106      * @return
107      */
108     public String getFileInfo(String filePath){
109         try {
110             FileInfo fileInfo = storageClient.get_file_info1(filePath);
111             String sourceIpAddr = fileInfo.getSourceIpAddr();//文件IP地址
112             long fileSize = fileInfo.getFileSize();//文件大小
113             Date createTimestamp = fileInfo.getCreateTimestamp();//文件创建时间
114             long crc32 = fileInfo.getCrc32();//错误码
115             return filePath;
116         } catch (Exception e) {
117             e.printStackTrace();
118             return null;
119         }
120 
121     }
122 }

上传文件方法:

@RequestMapping("/upload")
    public Result upload(MultipartFile[] files){
    List<String> list=new ArrayList<>();
        for (MultipartFile file : files) {
            String originalFilename = file.getOriginalFilename();//获取当前文件的全路径加名称
            String extName = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);//获取当前上传文件的扩展名

            /**
            进行相应的逻辑操作,保存上传文件的信息到数据库
            */
            try {
                FastDFSClient fastDFSClient=new FastDFSClient("classpath:config/fdfs_client.conf"); //创建FastDFS的客户端
                String path = fastDFSClient.uploadFile(file.getBytes(), extName);//获取上传数据的二进制字节码,以扩展名为extName的格式存在文件服务器,返回该文件在文件服务器的路径
                String url=FILE_SERVER_URL+path;  //拼接服务器的ip和该文件在服务器的路径,可以在网站中查询该图片
                list.add(url);
            } catch (Exception e) {
                e.printStackTrace();
                return new Result(false,"上传失败");
            }
        }
        return new Result(true,"上传成功");
    }

fastDfs配置ip:

vim /etc/fdfs/tracker.conf

http.server_port = 8080
use_storage_id = false
vim /etc/fdfs/storage.conf

http.server_port = 8888
tracker_server = 公网IP:22122
vim /etc/fdfs/storage_ids.conf
<id> <group_name> <ip_or_hostname>
100001 group1 公网IP
vim /etc/fdfs/mod_fastdfs.conf

use_storage_id = false
tracker_server = 公网地址:22122
vim /etc/fdfs/client.conf

use_storage_id = false
http.tracker_server_port = 80
tracker_server = 内网地址:22122
vim /fastdfs/storage/data/.data_init_flag

last_ip_addr = 内网IP
last_server_port = 23000
last_http_port = 8888
vim /fastdfs/tracker/data/storage_sync_timestamp.dat

group1,内网地址,0,0
group1,公网IP,0,0

 

posted @ 2020-10-16 16:35  keyboard达人  阅读(94)  评论(0编辑  收藏  举报