浏览代码

后台上传删除改成gofastdfs的接口

gaodm 5 年之前
父节点
当前提交
73af10989a

+ 1 - 7
config-server/src/main/resources/shared/knowledgeman-service-dev.yml

@@ -122,13 +122,7 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
 
-fastdfs:
-  connect_timeout_in_seconds: 60
-  network_timeout_in_seconds: 60
-  charset: UTF-8
-  http_tracker_http_port: 8080
-  http_anti_steal_token: no
-  tracker_servers: 192.168.2.236:22122
+imageUrl.klm: http://192.168.2.236:8060
 
 neo:
   server:

+ 1 - 7
config-server/src/main/resources/shared/knowledgeman-service-local.yml

@@ -122,13 +122,7 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
 
-fastdfs:
-  connect_timeout_in_seconds: 60
-  network_timeout_in_seconds: 60
-  charset: UTF-8
-  http_tracker_http_port: 8080
-  http_anti_steal_token: no
-  tracker_servers: 192.168.2.236:22122
+imageUrl.klm: http://192.168.2.236:8060
 
 neo:
   server:

+ 1 - 7
config-server/src/main/resources/shared/knowledgeman-service-pro.yml

@@ -122,13 +122,7 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
 
-fastdfs:
-  connect_timeout_in_seconds: 60
-  network_timeout_in_seconds: 60
-  charset: UTF-8
-  http_tracker_http_port: 8080
-  http_anti_steal_token: no
-  tracker_servers: 192.168.2.236:22122
+imageUrl.klm: http://192.168.2.236:8060
 
 neo:
   server:

+ 1 - 7
config-server/src/main/resources/shared/knowledgeman-service-test.yml

@@ -122,13 +122,7 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
 
-fastdfs:
-  connect_timeout_in_seconds: 60
-  network_timeout_in_seconds: 60
-  charset: UTF-8
-  http_tracker_http_port: 8080
-  http_anti_steal_token: no
-  tracker_servers: 192.168.2.241:22122
+imageUrl.klm: http://192.168.2.241:8060
 
 neo:
   server:

+ 5 - 5
knowledgeman-service/pom.xml

@@ -175,11 +175,6 @@
             <version>2.6.10</version>
         </dependency>
 
-        <dependency>
-            <groupId>net.oschina.zcx7878</groupId>
-            <artifactId>fastdfs-client-java</artifactId>
-            <version>1.27.0.0</version>
-        </dependency>
         <!-- 文件上传相关架包 -->
 		<dependency>
 			<groupId>commons-fileupload</groupId>
@@ -202,6 +197,11 @@
             <groupId>org.apache.poi</groupId>
             <artifactId>poi-ooxml</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>com.squareup.okhttp3</groupId>
+            <artifactId>okhttp</artifactId>
+        </dependency>
 		
     </dependencies>
 

+ 0 - 161
knowledgeman-service/src/main/java/com/diagbot/client/fastdfs/FastDFSClient.java

@@ -1,161 +0,0 @@
-package com.diagbot.client.fastdfs;
-
-import org.csource.common.NameValuePair;
-import org.csource.fastdfs.ClientGlobal;
-import org.csource.fastdfs.FileInfo;
-import org.csource.fastdfs.ServerInfo;
-import org.csource.fastdfs.StorageClient;
-import org.csource.fastdfs.StorageServer;
-import org.csource.fastdfs.TrackerClient;
-import org.csource.fastdfs.TrackerServer;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * @Description: FastDFS 客户端
- * @author: gaodm
- * @time: 2018/11/13 13:55
- */
-public class FastDFSClient {
-    private static org.slf4j.Logger logger = LoggerFactory.getLogger(FastDFSClient.class);
-
-    public static String[] upload(FastDFSFile file) {
-        logger.info("File Name: " + file.getName() + "File Length:" + file.getContent().length);
-
-        // 设置元信息
-        NameValuePair[] meta_list = new NameValuePair[2];
-        meta_list[0] = new NameValuePair("name", file.getName());
-        meta_list[1] = new NameValuePair("ext", file.getExt());
-
-        long startTime = System.currentTimeMillis();
-        String[] uploadResults = null;
-        StorageClient storageClient = null;
-        try {
-            storageClient = getTrackerClient();
-            uploadResults = storageClient.upload_file(file.getContent(), file.getExt(), meta_list);
-        } catch (IOException e) {
-            logger.error("IO Exception when uploadind the file:" + file.getName(), e);
-        } catch (Exception e) {
-            logger.error("Non IO Exception when uploadind the file:" + file.getName(), e);
-        }
-        logger.info("upload_file time used:" + (System.currentTimeMillis() - startTime) + " ms");
-
-        if (uploadResults == null && storageClient != null) {
-            logger.error("upload file fail, error code:" + storageClient.getErrorCode());
-        }
-        String groupName = uploadResults[0];
-        String remoteFileName = uploadResults[1];
-
-        logger.info("upload file successfully!!!" + "group_name:" + groupName + ", remoteFileName:" + " " + remoteFileName);
-        return uploadResults;
-    }
-
-    public static FileInfo getFile(String groupName, String remoteFileName) {
-        try {
-            StorageClient storageClient = getTrackerClient();
-            return storageClient.get_file_info(groupName, remoteFileName);
-        } catch (IOException e) {
-            logger.error("IO Exception: Get File from Fast DFS failed", e);
-        } catch (Exception e) {
-            logger.error("Non IO Exception: Get File from Fast DFS failed", e);
-        }
-        return null;
-    }
-
-    public static InputStream downFile(String groupName, String remoteFileName) {
-        try {
-            StorageClient storageClient = getTrackerClient();
-            byte[] fileByte = storageClient.download_file(groupName, remoteFileName);
-            InputStream ins = new ByteArrayInputStream(fileByte);
-            return ins;
-        } catch (IOException e) {
-            logger.error("IO Exception: Get File from Fast DFS failed", e);
-        } catch (Exception e) {
-            logger.error("Non IO Exception: Get File from Fast DFS failed", e);
-        }
-        return null;
-    }
-
-    public static void deleteFile(String groupName, String remoteFileName)
-            throws Exception {
-        StorageClient storageClient = getTrackerClient();
-        int i = storageClient.delete_file(groupName, remoteFileName);
-        logger.info("delete file successfully!!!" + i);
-    }
-
-    public static StorageServer[] getStoreStorages(String groupName)
-            throws IOException {
-        TrackerClient trackerClient = new TrackerClient();
-        TrackerServer trackerServer = trackerClient.getConnection();
-        return trackerClient.getStoreStorages(trackerServer, groupName);
-    }
-
-    public static ServerInfo[] getFetchStorages(String groupName,
-                                                String remoteFileName) throws IOException {
-        TrackerClient trackerClient = new TrackerClient();
-        TrackerServer trackerServer = trackerClient.getConnection();
-        return trackerClient.getFetchStorages(trackerServer, groupName, remoteFileName);
-    }
-
-    public static String getTrackerUrl() throws IOException {
-        return "http://" + getTrackerServer().getInetSocketAddress().getHostString() + ":" + ClientGlobal.getG_tracker_http_port() + "/";
-    }
-
-    private static StorageClient getTrackerClient() throws IOException {
-        TrackerClient trackerClient = new TrackerClient();
-        TrackerServer trackerServer = trackerClient.getConnection();
-        StorageServer storageServer = getStorageServer(getStorageServerIp(trackerClient, trackerServer));
-        StorageClient storageClient
-                = new StorageClient(trackerServer, storageServer);
-        return storageClient;
-    }
-
-    private static TrackerServer getTrackerServer() throws IOException {
-        TrackerClient trackerClient = new TrackerClient();
-        TrackerServer trackerServer = trackerClient.getConnection();
-        return trackerServer;
-    }
-
-    /**
-     * 获得可用的storage IP
-     *
-     * @param trackerClient
-     * @param trackerServer
-     * @return 返回storage IP
-     */
-    private static String getStorageServerIp(TrackerClient trackerClient, TrackerServer trackerServer) {
-        String storageIp = null;
-        if (trackerClient != null && trackerServer != null) {
-            try {
-                StorageServer storageServer = trackerClient.getStoreStorage(trackerServer, "group1");
-                storageIp = storageServer.getSocket().getInetAddress().getHostAddress();
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-        }
-        logger.info("获取组中可用的storage IP:" + storageIp);
-        return storageIp;
-    }
-
-    /**
-     * 得到Storage服务
-     *
-     * @param storageIp
-     * @return 返回Storage服务
-     */
-    private static StorageServer getStorageServer(String storageIp) {
-        StorageServer storageServer = null;
-        if (storageIp != null && !("").equals(storageIp)) {
-            try {
-                storageServer = new StorageServer(storageIp, Integer.parseInt("23000"), Integer.parseInt("0"));
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-        }
-        logger.info("storage server生成");
-        return storageServer;
-    }
-}

+ 0 - 70
knowledgeman-service/src/main/java/com/diagbot/client/fastdfs/FastDFSFile.java

@@ -1,70 +0,0 @@
-package com.diagbot.client.fastdfs;
-
-public class FastDFSFile {
-    private String name;
-
-    private byte[] content;
-
-    private String ext;
-
-    private String md5;
-
-    private String author;
-
-    public FastDFSFile(String name, byte[] content, String ext, String height,
-                       String width, String author) {
-        super();
-        this.name = name;
-        this.content = content;
-        this.ext = ext;
-        this.author = author;
-    }
-
-    public FastDFSFile(String name, byte[] content, String ext) {
-        super();
-        this.name = name;
-        this.content = content;
-        this.ext = ext;
-
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public byte[] getContent() {
-        return content;
-    }
-
-    public void setContent(byte[] content) {
-        this.content = content;
-    }
-
-    public String getExt() {
-        return ext;
-    }
-
-    public void setExt(String ext) {
-        this.ext = ext;
-    }
-
-    public String getMd5() {
-        return md5;
-    }
-
-    public void setMd5(String md5) {
-        this.md5 = md5;
-    }
-
-    public String getAuthor() {
-        return author;
-    }
-
-    public void setAuthor(String author) {
-        this.author = author;
-    }
-}

+ 0 - 49
knowledgeman-service/src/main/java/com/diagbot/config/FastDFSConfigurer.java

@@ -1,49 +0,0 @@
-package com.diagbot.config;
-
-import lombok.extern.slf4j.Slf4j;
-import org.csource.fastdfs.ClientGlobal;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import java.util.Properties;
-
-/**
- * @Description:
- * @author: gaodm
- * @time: 2019/3/1 14:15
- */
-@Configuration
-@Slf4j
-public class FastDFSConfigurer {
-    @Value("${fastdfs.connect_timeout_in_seconds}")
-    private String connectTimeout;
-    @Value("${fastdfs.network_timeout_in_seconds}")
-    private String networkTimeout;
-    @Value("${fastdfs.charset}")
-    private String charset;
-    @Value("${fastdfs.http_tracker_http_port}")
-    private String httpTrackerHttpPort;
-    @Value("${fastdfs.http_anti_steal_token}")
-    private String httpAntiStealToken;
-    @Value("${fastdfs.tracker_servers}")
-    private String trackerServers;
-
-    @Bean
-    public Integer fastDFSInit(){
-        try {
-            Properties props = new Properties();
-            props.put(ClientGlobal.PROP_KEY_CONNECT_TIMEOUT_IN_SECONDS, connectTimeout);
-            props.put(ClientGlobal.PROP_KEY_NETWORK_TIMEOUT_IN_SECONDS, networkTimeout);
-            props.put(ClientGlobal.PROP_KEY_CHARSET, charset);
-            props.put(ClientGlobal.PROP_KEY_HTTP_TRACKER_HTTP_PORT, httpTrackerHttpPort);
-            props.put(ClientGlobal.PROP_KEY_HTTP_ANTI_STEAL_TOKEN, httpAntiStealToken);
-            props.put(ClientGlobal.PROP_KEY_TRACKER_SERVERS, trackerServers);
-            ClientGlobal.initByProperties(props);
-
-        } catch (Exception e) {
-            log.error("FastDFS Client Init Fail!", e);
-        }
-        return 1;
-    }
-}

+ 1 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/FileDTO.java

@@ -15,6 +15,7 @@ public class FileDTO {
     private String original;
     private String title;
     private String url;
+    private String md5;
     private String info;
 
     public FileDTO(String state, String info) {

+ 17 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/FileDeleteDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2019/11/4 11:09
+ */
+@Getter
+@Setter
+public class FileDeleteDTO {
+    private Object data;
+    private String message;
+    private String status;
+}

+ 25 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/FileUploadDTO.java

@@ -0,0 +1,25 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2019/11/4 10:55
+ */
+@Getter
+@Setter
+public class FileUploadDTO {
+    private String url;
+    private String md5;
+    private String path;
+    private String domain;
+    private String scene;
+    private int size;
+    private int mtime;
+    private String scenes;
+    private String retmsg;
+    private int retcode;
+    private String src;
+}

+ 79 - 49
knowledgeman-service/src/main/java/com/diagbot/service/impl/UploadServiceImpl.java

@@ -1,16 +1,24 @@
 package com.diagbot.service.impl;
 
-import com.diagbot.client.fastdfs.FastDFSClient;
-import com.diagbot.client.fastdfs.FastDFSFile;
 import com.diagbot.dto.FileDTO;
+import com.diagbot.dto.FileDeleteDTO;
+import com.diagbot.dto.FileUploadDTO;
 import com.diagbot.service.UploadService;
+import com.diagbot.util.GsonUtil;
+import com.diagbot.util.StringUtil;
 import lombok.extern.slf4j.Slf4j;
+import okhttp3.FormBody;
+import okhttp3.MediaType;
+import okhttp3.MultipartBody;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import okhttp3.Response;
+import okhttp3.ResponseBody;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.IOException;
-import java.io.InputStream;
-
 /**
  * @Description: 文件上传服务接口实现
  * @author: gaodm
@@ -19,6 +27,9 @@ import java.io.InputStream;
 @Slf4j
 @Service
 public class UploadServiceImpl implements UploadService {
+    @Value("${imageUrl.klm}")
+    private String imagerUrl;
+
     @Override
     public FileDTO singleFileUpload(MultipartFile file) {
         if (file.isEmpty()) {
@@ -28,71 +39,90 @@ public class UploadServiceImpl implements UploadService {
         if (file.getSize() > 1024 * 1024) {
             return new FileDTO("FAILURE", "文件上传失败,超出大小限制1MB");
         }
+
+        String result = "";
         try {
-            FileDTO fileDTO = saveFile(file);
-            return fileDTO;
-        } catch (Exception e) {
-            log.error("文件上传失败", e);
-            return new FileDTO("FAILURE", "文件上传失败,请重新上传");
-        }
-    }
+            OkHttpClient httpClient = new OkHttpClient();
+            MultipartBody multipartBody = new MultipartBody.Builder().
+                    setType(MultipartBody.FORM)
+                    .addFormDataPart("file", file.getOriginalFilename(),
+                            RequestBody.create(MediaType.parse("multipart/form-data;charset=utf-8"),
+                                    file.getBytes()))
+                    .addFormDataPart("output", "json")
+                    .build();
 
+            Request request = new Request.Builder()
+                    .url(imagerUrl + "/group1/upload")
+                    .post(multipartBody)
+                    .build();
 
-    /**
-     * @param multipartFile
-     * @return
-     * @throws IOException
-     */
-    public FileDTO saveFile(MultipartFile multipartFile) throws IOException {
+            Response response = httpClient.newCall(request).execute();
+            if (response.isSuccessful()) {
+                ResponseBody body = response.body();
+                if (body != null) {
+                    result = body.string();
+                    //System.out.println(result);
+                }
+            }
 
-        String[] fileAbsolutePath = {};
-        String fileName = multipartFile.getOriginalFilename();
-        String ext = fileName.substring(fileName.lastIndexOf(".") + 1);
-        byte[] file_buff = null;
-        InputStream inputStream = multipartFile.getInputStream();
-        if (inputStream != null) {
-            int len1 = inputStream.available();
-            file_buff = new byte[len1];
-            inputStream.read(file_buff);
-        }
-        inputStream.close();
-        FastDFSFile file = new FastDFSFile(fileName, file_buff, ext);
-        try {
-            fileAbsolutePath = FastDFSClient.upload(file);  //upload to fastdfs
+            if (StringUtil.isBlank(result)) {
+                return new FileDTO("FAILURE", "文件上传失败,请重新上传");
+            }
         } catch (Exception e) {
-            log.error("文件上传异常", e);
-            return new FileDTO("FAILURE", "文件上传异常");
-        }
-        if (fileAbsolutePath == null) {
-            log.error("文件上传失败,请重新上传");
+            log.error("文件上传失败", e);
             return new FileDTO("FAILURE", "文件上传失败,请重新上传");
         }
-        String path = "/" + fileAbsolutePath[0] + "/" + fileAbsolutePath[1];
+
+        FileUploadDTO fileUploadDTO = GsonUtil.toObject(result, FileUploadDTO.class);
         FileDTO fileDTO = new FileDTO("SUCCESS", "文件上传成功");
-        fileDTO.setUrl(path);
-        fileDTO.setOriginal(multipartFile.getOriginalFilename());
-        fileDTO.setTitle(multipartFile.getOriginalFilename());
+        fileDTO.setUrl(fileUploadDTO.getPath());
+        fileDTO.setMd5(fileUploadDTO.getMd5());
+        fileDTO.setOriginal(file.getOriginalFilename());
+        fileDTO.setTitle(file.getOriginalFilename());
         return fileDTO;
     }
 
     /**
      * 删除服务端文件
      *
-     * @param path
+     * @param md5
      * @return
      */
-    public FileDTO deleteRemoteFile(String path) {
-        if (path.startsWith("/")) {
-            path = path.substring(1);
-        }
-        String fileName = path.substring(path.indexOf("/") + 1);
-        String groupName = path.substring(0, path.indexOf("/"));
+    public FileDTO deleteRemoteFile(String md5) {
+        String result = "";
         try {
-            FastDFSClient.deleteFile(groupName, fileName);
+            OkHttpClient httpClient = new OkHttpClient();
+            RequestBody formBody = new FormBody.Builder()
+                    .add("md5", md5)
+                    .build();
+
+            Request request = new Request.Builder()
+                    .url(imagerUrl + "/group1/delete")
+                    .post(formBody)
+                    .build();
+
+            Response response = httpClient.newCall(request).execute();
+            if (response.isSuccessful()) {
+                ResponseBody body = response.body();
+                if (body != null) {
+                    result = body.string();
+                    //System.out.println(result);
+                }
+            }
+
+            if (StringUtil.isBlank(result)) {
+                return new FileDTO("FAILURE", "文件删除失败");
+            }
+
         } catch (Exception e) {
             log.error("", e);
             return new FileDTO("FAILURE", "文件删除失败");
         }
+
+        FileDeleteDTO fileDeleteDTO = GsonUtil.toObject(result, FileDeleteDTO.class);
+        if (fileDeleteDTO.getStatus().equals("fail")) {
+            return new FileDTO("FAILURE", fileDeleteDTO.getMessage());
+        }
         return new FileDTO("SUCCESS", "文件删除成功");
     }
 }

+ 2 - 8
knowledgeman-service/src/main/java/com/diagbot/web/UploadController.java

@@ -3,8 +3,6 @@ package com.diagbot.web;
 import com.diagbot.dto.FileDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.UploadFacade;
-import com.diagbot.util.FastJsonUtils;
-import com.diagbot.util.StringUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -17,10 +15,6 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.File;
-
 @RestController
 @Api(value = "文件上传API", tags = { "知识库标准化-文件上传API" })
 @RequestMapping(value = "/file")
@@ -43,8 +37,8 @@ public class UploadController {
 
     @PostMapping("/deleteRemoteFile")
     @ApiOperation(value = "知识库标准化-文件删除")
-    public RespDTO<FileDTO> deleteRemoteFile(@RequestParam("path") String path) {
-        FileDTO data = uploadFacade.deleteRemoteFile(path);
+    public RespDTO<FileDTO> deleteRemoteFile(@RequestParam("md5") String md5) {
+        FileDTO data = uploadFacade.deleteRemoteFile(md5);
         if (data.getState().equals("FAILURE")) {
             return RespDTO.onError(data.getInfo());
         } else {

+ 7 - 0
pom.xml

@@ -56,6 +56,7 @@
         <logstash.version>5.2</logstash.version>
         <poi.version>4.1.0</poi.version>
         <aggregator.version>1.1.0</aggregator.version>
+        <okhttp.version>4.2.2</okhttp.version>
         <docker-maven-plugin.version>1.1.1</docker-maven-plugin.version>
         <docker.image.prefix>192.168.2.236:5000/diagbotcloud</docker.image.prefix>
     </properties>
@@ -171,6 +172,12 @@
                 <artifactId>spring-boot-data-aggregator-starter</artifactId>
                 <version>${aggregator.version}</version>
             </dependency>
+
+            <dependency>
+                <groupId>com.squareup.okhttp3</groupId>
+                <artifactId>okhttp</artifactId>
+                <version>${okhttp.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>