java ftp上傳檔案內容為空
阿新 • • 發佈:2019-02-13
檔案上傳成功 但是內容為空 需要加上 ftpClient.enterLocalPassiveMode();
程式碼如下:
package com.zhuoshi.jcbigdata.spark.jinjingzheng; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; import org.junit.Test; /** * 實現FTP檔案上傳和檔案下載 */ //xml上傳ftp public class FtpClient { private static FTPClient ftpClient = new FTPClient(); private static String encoding = System.getProperty("file.encoding");//獲取當前檔案的格式編碼 /** * Description: 向FTP伺服器上傳檔案 * * @Version1.0 * @param url * FTP伺服器hostname * @param port * FTP伺服器埠 * @param username * FTP登入賬號 * @param password * FTP登入密碼 * @param path * FTP伺服器儲存目錄,如果是根目錄則為“/” * @param filename * 上傳到FTP伺服器上的檔名 * @param input * 本地檔案輸入流 * @return 成功返回true,否則返回false */ public static boolean uploadFile(String url, int port, String username, String password, String path, String filename, InputStream input) { boolean result = false; try { int reply; // 如果採用預設埠,可以使用ftp.connect(url)的方式直接連線FTP伺服器 ftpClient.connect(url); // ftp.connect(url, port);// 連線FTP伺服器 // 登入 ftpClient.login(username, password); ftpClient.enterLocalPassiveMode(); ftpClient.setControlEncoding(encoding); // 檢驗是否連線成功 reply = ftpClient.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { System.out.println("連線失敗"); ftpClient.disconnect(); return result; } // 轉移工作目錄至指定目錄下 if(path==null||path.equals("")) { //如果path為空 存在根目錄下 path="/"; } boolean change = ftpClient.changeWorkingDirectory(path); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); if (change) { result = ftpClient.storeFile(new String(filename.getBytes("GBK"),"iso-8859-1"), input); if (result) { System.out.println("上傳成功!"); } } input.close(); ftpClient.logout(); } catch (IOException e) { e.printStackTrace(); } finally { if (ftpClient.isConnected()) { try { ftpClient.disconnect(); } catch (IOException ioe) { } } } return result; } /** * 將本地檔案上傳到FTP伺服器上 * */ @Test public void testUpLoadFromDisk() { try { FileInputStream in = new FileInputStream(new File("D:/JJZWF/xxx.xml")); boolean flag = uploadFile("url", 21, "passname","password", "/", "xxx.xml", in); System.out.println(flag); } catch (FileNotFoundException e) { e.printStackTrace(); } } }
參考文件
http://www.bubuko.com/infodetail-985948.html
本站系本人編輯轉載,轉載目的在於傳遞更多資訊,並不代表本人贊同其觀點和對其真實性負責。如涉及作品內容、版權和其它問題,請在30日內與本人聯絡,我將在第一時間刪除內容![宣告]本站文章版權歸原作者所有 內容為作者個人觀點 本站只提供參考並不構成任何投資及應用建議。