最近工作中用到了 ftp 相關的操作,所以藉此機會了解了下具體內容。
關於 ftp 基礎推薦閱讀《使用 socket 通訊實現 ftp 客戶端程式》,其中需要特別注意的是主動模式和被動模式,這一部分在日常使用中經常被忽略,但生產環境中可能會出問題,關鍵在於防火牆對埠的控制。
程式操作 ftp 過程在上面推薦的文章中有所提及,大家可以看到過程還是比較複雜的,不過好在有 apache 的 commons-net 給我們提供了相關的工具類可以使用,本文使用的是 3.6 版本。以下通過**進行說明,此**僅演示功能,很多地方並不完善,如果用作生產請自行修改。
/**
* ftp傳送至目標伺服器
*@apinote 依賴apache commons-net 包
*@param server
*/public
static
void
sendtoserverbyftp(string server, int port, string username, string password,
string encoding, string filelocalpath, string fileremotepath, string fileremotename) throws ioexception
// 設定編碼,當檔案中存在中文且上傳後檔案亂碼時可使用此配置項
// 切換為本地被動模式,可以解決ftp上傳後檔案為空的問題,但需要伺服器將ftp服務新增至防火牆白名單
// 切換到指定目錄
ftpclient.changeworkingdirectory(fileremotepath);
// 獲取檔案並上傳
file file = new file(filelocalpath);
inputstream inputstream = new fileinputstream(file);
//檔名為中文名且上傳後出現亂碼時啟用此項
//string filename = new string(fileremotename.getbytes(encoding), "iso8859-1");
boolean flag = ftpclient.storefile(fileremotename, inputstream);
// 關閉已占用資源
inputstream.close();
ftpclient.logout();
}
public
void
downloadfile(string server, int port, string username, string password,
string serverpath, string localpath, string filename) throws ioexception
// 切換伺服器至目標目錄
ftpclient.changeworkingdirectory(serverpath);
file file = new file(localpath);
fileoutputstream fileoutputstream = new fileoutputstream(file);
ftpclient.retrievefile(filename, fileoutputstream);
// 關閉資源占用
fileoutputstream.close();
ftpclient.logout();
}
public
void
deletefile(string server, int port, string username, string password,
string serverpath, string filename) throws ioexception
ftpclient.changeworkingdirectory(serverpath);
ftpclient.deletefile(filename);
}
java Ftp檔案上傳
附件ajax上傳處理 author date 2015 7 10 下午4 30 32 ftp工具類 author date 2015 10 9 下午2 06 14 public class ftputil bool true catch exception e bool false return b...
mysql基本操作 MySQL基本操作
mysql中新增使用者,新建資料庫,使用者授權,刪除使用者,修改密碼 注意每行後邊都跟個 表示乙個命令語句結束 1.新建使用者 1.1 登入mysql mysql u root p 密碼 1.2 建立使用者 mysql insert into mysql.user host,user,passwor...
mysql 基本操作 mysql基本操作
mysql 建立表,並設定主鍵自增 create table log logid int 4 primary key not null auto increment,logtitle varchar 32 not null logcontent varchar 160 not null logtim...