FTP 傳輸檔案後臺程式碼
阿新 • • 發佈:2019-02-08
/** * Description: 向FTP伺服器上傳檔案 * @param host FTP伺服器hostname * @param port FTP伺服器埠 * @param username FTP登入賬號 * @param password FTP登入密碼 * @param basePath FTP伺服器基礎目錄 * @param filePath FTP伺服器檔案存放路徑。例如分日期存放:/2015/01/01。檔案的路徑為basePath+filePath * @param filename 上傳到FTP伺服器上的檔名 * @param input 輸入流 * @return 成功返回true,否則返回false */ public boolean uploadFile(String host, int port, String username, String password, String basePath, String filePath, String filename, InputStream input) { boolean result = false; FTPClient ftp = new FTPClient(); try { int reply; ftp.connect(host, port);// 連線FTP伺服器 // 如果採用預設埠,可以使用ftp.connect(host)的方式直接連線FTP伺服器 ftp.login(username, password);// 登入 reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); return result; } ftp.setControlEncoding("UTF-8"); ftp.enterLocalPassiveMode(); ftp.setFileTransferMode(FTP.STREAM_TRANSFER_MODE); //切換到上傳目錄 if (!ftp.changeWorkingDirectory(basePath+filePath)) { //如果目錄不存在建立目錄 String[] dirs = filePath.split("/"); String tempPath = basePath; for (String dir : dirs) { if (null == dir || "".equals(dir)) continue; tempPath += "/" + dir; if (!ftp.changeWorkingDirectory(tempPath)) { if (!ftp.makeDirectory(tempPath)) { return result; } else { ftp.changeWorkingDirectory(tempPath); } } } } //設定上傳檔案的型別為二進位制型別 ftp.setFileType(FTP.BINARY_FILE_TYPE); //上傳檔案 if (!ftp.storeFile(new String(filename.getBytes("UTF-8"),"iso-8859-1"), input)) { return result; } input.close(); ftp.logout(); result = true; } catch (IOException e) { e.printStackTrace(); } finally { if (ftp.isConnected()) { try { ftp.disconnect(); } catch (IOException ioe) { } } } return result; }
最近,做一個生成excel之後,通過ftp檔案傳輸到伺服器,並推送到微信。
下面這裡是ftp傳輸的關鍵程式碼
//呼叫方法,和返回值,如果返回true,傳輸成功
boolean result = wxsmsService.uploadFile(ftpHost, 21, ftpUser, ftpPwd, ftpBasepath, String.valueOf(task.getTaskId()), date+"網點到訪簡訊傳送情況.xls", in);
System.out.println("taskId======="+task.getTaskId()+"======="+result);