java110 лет назад: 5
Родитель
Сommit
7157bd7be9

+ 7 - 19
CommonService/src/main/java/com/java110/common/smo/impl/FileInnerServiceSMOImpl.java

@@ -62,27 +62,15 @@ public class FileInnerServiceSMOImpl extends BaseServiceSMO implements IFileInne
             ftpPath += fileName.substring(0, fileName.lastIndexOf("/")+1);
             fileName = fileName.substring(fileName.lastIndexOf("/")+1, fileName.length());
         }
-        byte[] fileImg = ftpUploadTemplate.downFileByte(ftpPath, fileName, java110Properties.getFtpServer(),
+//        byte[] fileImg = ftpUploadTemplate.downFileByte(ftpPath, fileName, java110Properties.getFtpServer(),
+//                java110Properties.getFtpPort(), java110Properties.getFtpUserName(),
+//                java110Properties.getFtpUserPassword());
+//
+//       //String context = new BASE64Encoder().encode(fileImg);
+//        String context = Base64Convert.byteToBase64(fileImg);
+        String context = ftpUploadTemplate.download(ftpPath, fileName, java110Properties.getFtpServer(),
                 java110Properties.getFtpPort(), java110Properties.getFtpUserName(),
                 java110Properties.getFtpUserPassword());
-        try {
-            File file = new File("/home/hc/img/"+ UUID.randomUUID().toString()+".jpg");
-            File fileParent = file.getParentFile();
-            if (!fileParent.exists()) {
-                fileParent.mkdirs();// 能创建多级目录
-            }
-            if(!file.exists()){
-                file.createNewFile();
-            }
-            OutputStream out = new FileOutputStream(file);
-            out.write(fileImg);
-            out.flush();
-            out.close();
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-       //String context = new BASE64Encoder().encode(fileImg);
-        String context = Base64Convert.byteToBase64(fileImg);
 
         fileDto.setContext(context);
         fileDtos.add(fileDto);

+ 58 - 0
java110-core/src/main/java/com/java110/core/client/FtpUploadTemplate.java

@@ -203,6 +203,64 @@ public class FtpUploadTemplate {
         return return_arraybyte;
     }
 
+    public String download(String remotePath, String fileName, String server, int port, String userName, String userPassword) {
+        InputStream is = null;
+        ByteArrayOutputStream bos = null;
+        FTPClient ftpClient = new FTPClient();
+        try {
+            ftpClient.connect(server, port);
+            ftpClient.login(userName, userPassword);
+            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
+            int reply = ftpClient.getReplyCode();
+            if (!FTPReply.isPositiveCompletion(reply)) {
+                ftpClient.disconnect();
+            }
+            String f = new String(
+                    (remotePath + fileName).getBytes("GBK"),
+                    FTP.DEFAULT_CONTROL_ENCODING);
+            is = ftpClient.retrieveFileStream(f);// 获取远程ftp上指定文件的InputStream
+            if (null == is) {
+                throw new FileNotFoundException(fileName);
+            }
+            bos = new ByteArrayOutputStream();
+            int length;
+            byte[] buf = new byte[2048];
+            while (-1 != (length = is.read(buf, 0, buf.length))) {
+                bos.write(buf, 0, length);
+            }
+            ByteArrayInputStream fis = new ByteArrayInputStream(
+                    bos.toByteArray());
+            bos.flush();
+            is.close();
+            bos.close();
+            byte[] buffer = new byte[fis.available()];
+            int offset = 0;
+            int numRead = 0;
+            while (offset < buffer.length && (numRead = fis.read(buffer, offset, buffer.length - offset)) >= 0) {
+                offset += numRead;
+            }
+            if (offset != buffer.length) {
+                throw new IOException("Could not completely read file ");
+            }
+            fis.close();
+            return Base64Convert.byteToBase64(buffer);
+        } catch (Exception e) {
+            logger.error("ftp通过文件名称获取远程文件流", e);
+        } finally {
+            try {
+                if(bos != null){
+                    bos.close();
+                }
+                if(is !=null) {
+                    is.close();
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return null;
+    }
+
     public void closeConnect(FTPClient ftpClient) {
         try {
             ftpClient.disconnect();