Android FTP上傳圖片
阿新 • • 發佈:2019-01-09
FTP在android上使用的是commons-net-3.3.jar
package com.psw.ftpclient.util; 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 android.util.Log; public class FTPutil { /** * 向FTP伺服器上傳檔案 * * @param url * FTP伺服器hostname * @param port * 埠預設80 * @param username * 使用者名稱 * @param password * 密碼 * @param path * FTP伺服器儲存目錄,是linux下的目錄形式,如/photo/ * @param filename * 檔名稱 上傳到FTP伺服器上的檔名,是自己定義的名字 * @param input * 輸入流 * @return */ public static boolean upload(String url, int port, String username, String password, String path, String filename, InputStream input) { boolean success = false; FTPClient ftp = new FTPClient(); try { int reply; ftp.connect(url, port);// 連線FTP伺服器 // 如果採用預設埠,可以使用ftp.connect(url)的方式直接連線FTP伺服器 ftp.login(username, password);// 登入 reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); return success; } boolean isExist = ftp.changeWorkingDirectory(path); if(!isExist){ ftp.makeDirectory(path) ; ftp.changeWorkingDirectory(path); } ftp.setBufferSize(1024); ftp.setControlEncoding("utf-8"); ftp.enterLocalPassiveMode(); ftp.setFileType(FTP.BINARY_FILE_TYPE); //處理中文名稱的檔名,如果不加這一句的話,中文命名的檔案是不能上傳的 filename = new String(filename.getBytes("GBK"), "iso-8859-1") ; ftp.storeFile(filename, input); input.close(); ftp.logout(); success = true; Log.e("FTPutil", "success") ; } catch (IOException e) { e.printStackTrace(); } finally { if (ftp.isConnected()) { try { ftp.disconnect(); } catch (IOException ioe) { } } } return success; } }