使用FTPClient將圖片後上傳至ftp服務器

1、上傳本地圖片至遠程ftp服務器

	@Test
    public void uploadFTP() throws IOException {


        String fj = "";//附件信息字段
        FTPClient ftp = new FTPClient();
        // FTP服務器ip地址及端口
        String baseFtpPath = "ftp://102.0.171.174:21";
        // 本地圖片絕對地址
        String localFilePath = "G:\\work\\1.png";
		// 圖片保存地址 及 保存的圖片名
        String ftpPath = "/usr/faceScan/aa/" + "text.png";
        //連接ftp
        if (!ftp.isConnected()) {
            int reply;
            ftp.connect("102.0.171.174", 21); // 連接FTP服務器
            ftp.login("root", "123456"); // 登錄FTP
            reply = ftp.getReplyCode(); // 正常返回230登陸成功
            System.out.println(reply);
            if (!FTPReply.isPositiveCompletion(reply)) {
                ftp.disconnect();
            }
        }

        // 讀取本地文件
        File localFile = new File(localFilePath);
        // 獲取保存的各級目錄名
        String ftpDir = ftpPath.substring(0, ftpPath.lastIndexOf("/"));
        String[] dirs = ftpDir.split("/");
        // 創建目錄並修改爲ftp的上傳目錄
        for (String dir : dirs) {
            ftp.makeDirectory(dir);
            ftp.changeWorkingDirectory(dir);
        }
        // 使用流讀取圖片
        InputStream input = new FileInputStream(localFile);// localFilePath爲要上傳的本地文件路徑
		// 打印輸入流讀取的內容
        while (true){
            int read = input.read();
            if(read < 0){
                break;
            }
            System.out.println((char)read + "   =========");
        }
        ftp.enterLocalPassiveMode(); // 設置被動模式
        ftp.setFileTransferMode(FTP.STREAM_TRANSFER_MODE); // 設置流上傳方式
        ftp.setFileType(FTP.BINARY_FILE_TYPE); // 設置二進制上傳
        // 上傳 fileName爲上傳後的文件名
        boolean t =  ftp.storeFile(location.substring(location.lastIndexOf("/") + 1), input); 
        System.out.println(t);
        input.close(); // 關閉文件流
        fj = fj + (baseFtpPath + ftpPath) + ",";
        for (int i = 0; i < dirs.length; i++) {
            ftp.changeToParentDirectory();
        }
        if (ftp.isConnected()) {
            ftp.logout(); // 退出FTP
        }
    }

2、從微信素材庫獲取圖片後上傳至遠程ftp服務器

 ......
try {
       // 由redis緩存獲取accessToken
       Object accessToken = redisTemplate.opsForValue().get("WxConfigAccesstoken");
       byte[] ret = null;
       // 拼接微信素材庫圖片的獲取地址
       String url = "https://api.weixin.qq.com/cityservice/face/identify/getimage?access_token=" + accessToken;
       JSONObject jsonVerify = new JSONObject();
       // 微信服務器的圖片保存標誌
       jsonVerify.put("verify_result", btUser.getCode());
       //doPost  訪問微信服務器,獲取圖片
       ret = HttpConnectionPoolUtil.weixinPostReturnByte(url, jsonVerify.toJSONString(), null);
       if (ret.length < 10000) {
           return BaseRespone.ok(Code.JWT_INSERT_ERROR_CODE, Code.JWT_INSERT_ERROR_MSG);
       }
//
//                    //小於300k不壓縮
//                    //壓縮區間
//                    byte[] formatImageByte = ImageUtils.compressImage(ret);
//                    //如果異常的話
//                    if (null == formatImageByte) {
//                        formatImageByte = (new BASE64Encoder().encode(ret)).replace("\n", "").getBytes();
//                    }
//                    btUser.setCode(String.valueOf(formatImageByte));
//
       btUser.setCode(String.valueOf(ret));
       String fj = "";//附件信息字段
       FTPClient ftp = new FTPClient();
       // ftp地址
       String baseFtpPath = "ftp://102.0.171.174:21";
       // ftp 文件保存目錄
       String ftpPath = "/usr/faceScan/" + UUID.randomUUID().toString() + ".png";
       //連接ftp
       if (!ftp.isConnected()) {
           int reply;
           ftp.connect(ftpIp, ftpPort); // 連接FTP服務器
           ftp.login(username, password); // 登錄FTP
           reply = ftp.getReplyCode(); // 正常返回230登陸成功
           if (!FTPReply.isPositiveCompletion(reply)) {
               ftp.disconnect();
           }
       }
       // 獲取各級目錄
       String ftpDir = ftpPath.substring(0, ftpPath.lastIndexOf("/"));
       String[] dirs = ftpDir.split("/");
       // 創建各級目錄,並將ftp的上傳目錄更改爲這個目錄
       for (String dir : dirs) {
           ftp.makeDirectory(dir);
           ftp.changeWorkingDirectory(ftpDir);
       }
       // 將從微信服務器獲取的圖片字節數組裝入流中
       InputStream input = new ByteArrayInputStream(ret);
       ftp.enterLocalPassiveMode(); // 設置被動模式
       ftp.setFileTransferMode(FTP.STREAM_TRANSFER_MODE); // 設置流上傳方式
       ftp.setFileType(FTP.BINARY_FILE_TYPE); // 設置二進制上傳
	   // 上傳 fileName爲上傳後的文件名
       boolean t =  ftp.storeFile(location.substring(location.lastIndexOf("/") + 1), input); 

       input.close(); // 關閉文件流
       fj = fj + (baseFtpPath + ftpPath) + ",";
       for (int i = 0; i < dirs.length; i++) {
           ftp.changeToParentDirectory();
       }
       if (ftp.isConnected()) {
           ftp.logout(); // 退出FTP
       }
   }catch (Exception e){
       e.printStackTrace();
   }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章