1. 程式人生 > >FTP 傳輸檔案後臺程式碼

FTP 傳輸檔案後臺程式碼

    /**  
     * 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);