1. 程式人生 > >java ftp上傳檔案內容為空

java ftp上傳檔案內容為空

檔案上傳成功 但是內容為空 需要加上 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日內與本人聯絡,我將在第一時間刪除內容![宣告]本站文章版權歸原作者所有 內容為作者個人觀點 本站只提供參考並不構成任何投資及應用建議。