|
復制代碼 代碼如下:
FTP ftp = new FTP("192.168.1.117", "ahuinan", "123456");
string oldname = this.FileUpload1.PostedFile.FileName;
string newname = dd + h + mm + ss + oldname.Substring(oldname.LastIndexOf("."));
// ftp.Connect();
ftp.OpenUpload(oldname,newname);
while (ftp.DoUpload() > 0)
{
int perc = (int)(((ftp.BytesTotal) * 100) / ftp.FileSize);
Response.Write(perc.ToString() + "%<br/>");
Response.Flush();
}
功能
ü 建立FTP鏈接
ü 支持代理
ü 多種重載的同步上傳文件
ü 多種重載的異步上傳文件
ü 多種重載的同步下載文件
ü 多種重載的異步下載文件
ü 上傳文件的進度百分比
ü 下載文件的進度白分比
ü 有區分的列出目錄或者文件的信息(考慮到MS DOS顯示格式和UNIX格式)
ü 目錄或文件存在的判斷
ü 刪除文件
ü 重命名文件、目錄
ü 在FTP服務器上面拷貝、移動文件(許多人可能在苦苦尋找這個功能)
ü 建立、刪除目錄
ü 目錄切換操作(很新穎哦 J)
公共構造函數
名稱 | 說明 |
clsFTP() | 初始化clsFtp類的新實例 |
clsFTP(Uri FtpUri, string strUserName, string strPassword) | 由FTP地址、FTP登錄用戶信息、FTP登錄用戶密碼初始化clsFtp類的新實例 |
clsFTP(Uri FtpUri, string strUserName, string strPassword, WebProxy objProxy) | 由FTP地址、FTP登錄用戶信息、FTP登錄用戶密碼、代理服務器對象初始化clsFtp類的新實例 |
|
|
公共屬性
名稱 | 說明 |
Uri | 獲取或設置FTP服務器地址 |
DirectoryPath | 獲取當前工作目錄 |
UserName | 獲取或設置FTP登錄用戶 |
Password | 獲取或設置FTP登錄密碼 |
Proxy | 獲取或設置連接FTP服務器的代理服務 |
ErrorMsg | 獲取操在返回的錯誤信息 |
公共方法
名稱 | 說明 |
DownloadFile(string RemoteFileName, string LocalPath) | 從FTP服務器下載文件,使用與遠程文件同名的文件名來保存文件。 參數說明: RemoteFileName: 遠程文件名 LocalPath: 本地路徑 |
DownloadFile(string RemoteFileName, string LocalPath, string LocalFileName) | 從FTP服務器下載文件,指定本地路徑和本地文件名。 參數說明: LocalPath: 本地路徑 LocalFilePath: 保存文件的本地路徑,后面帶有"/" LocalFileName: 保存本地的文件名 |
DownloadFile(string RemoteFileName) | 從FTP服務器下載文件,返回文件二進制數據。 參數說明: RemoteFileName: 遠程文件名 |
DownloadFileAsync(string RemoteFileName, string LocalPath, string LocalFileName) | 從FTP服務器異步下載文件,指定本地路徑和本地文件名。 參數說明: RemoteFileName: 遠程文件名 LocalPath: 保存文件的本地路徑,后面帶有"/" LocalFileName: 保存本地的文件名 |
DownloadFileAsync(string RemoteFileName, string LocalFullPath) | 從FTP服務器異步下載文件,指定本地完整路徑文件名。 參數說明: RemoteFileName: 遠程文件名 LocalFullPath: 本地完整路徑文件名 |
UploadFile(string LocalFullPath) | 上傳文件到FTP服務器。 參數說明: LocalFullPath: 本地帶有完整路徑的文件名 |
UploadFile(string LocalFullPath, bool OverWriteRemoteFile) | 上傳文件到FTP服務器。 參數說明: LocalFullPath: 本地帶有完整路徑的文件 OverWriteRemoteFile: 是否覆蓋遠程服務器上面同名的文件 |
UploadFile(string LocalFullPath, string RemoteFileName) | 上傳文件到FTP服務器。 參數說明: LocalFullPath: 本地帶有完整路徑的文件 RemoteFileName: 要在FTP服務器上面保存文件名 |
UploadFile(string LocalFullPath, string RemoteFileName, bool OverWriteRemoteFile) | 上傳文件到FTP服務器。 參數說明: LocalFullPath: 本地帶有完整路徑的文件名 RemoteFileName: 要在FTP服務器上面保存文件名 OverWriteRemoteFile: 是否覆蓋遠程服務器上面同名的文件 |
UploadFile(byte[] FileBytes, string RemoteFileName) | 上傳文件到FTP服務器。 參數說明: FileBytes: 上傳的二進制數據 RemoteFileName: 要在FTP服務器上面保存文件名 |
UploadFile(byte[] FileBytes, string RemoteFileName, bool OverWriteRemoteFile) | 上傳文件到FTP服務器。 參數說明: FileBytes: 文件二進制內容 RemoteFileName: 要在FTP服務器上面保存文件名 OverWriteRemoteFile: 是否覆蓋遠程服務器上面同名的文件 |
UploadFileAsync(string LocalFullPath) | 異步上傳文件到FTP服務器。 參數說明: LocalFullPath: 本地帶有完整路徑的文件名 |
UploadFileAsync(string LocalFullPath, bool OverWriteRemoteFile) | 異步上傳文件到FTP服務器。 參數說明: LocalFullPath: 本地帶有完整路徑的文件 OverWriteRemoteFile: 是否覆蓋遠程服務器上面同名的文件 |
UploadFileAsync(string LocalFullPath, string RemoteFileName) | 異步上傳文件到FTP服務器。 參數說明: LocalFullPath: 本地帶有完整路徑的文件 RemoteFileName: 要在FTP服務器上面保存文件名 |
UploadFileAsync(string LocalFullPath, string RemoteFileName, bool OverWriteRemoteFile) | 異步上傳文件到FTP服務器。 參數說明: LocalFullPath: 本地帶有完整路徑的文件名 RemoteFileName: 要在FTP服務器上面保存文件名 OverWriteRemoteFile: 是否覆蓋遠程服務器上面同名的文件 |
UploadFileAsync(byte[] FileBytes, string RemoteFileName) | 異步上傳文件到FTP服務器。 參數說明: FileBytes: 上傳的二進制數據 RemoteFileName: 要在FTP服務器上面保存文件名 |
UploadFileAsync(byte[] FileBytes, string RemoteFileName, bool OverWriteRemoteFile) | 異步上傳文件到FTP服務器。 參數說明: FileBytes: 文件二進制內容 RemoteFileName: 要在FTP服務器上面保存文件名 OverWriteRemoteFile: 是否覆蓋遠程服務器上面同名的文件 |
ListFilesAndDirectories() | 列出FTP服務器上面當前目錄的所有文件和目錄。 |
ListFiles() | 列出FTP服務器上面當前目錄的所有文件。 |
ListDirectories() | 列出FTP服務器上面當前目錄的所有的目錄。 |
DirectoryExist(string RemoteDirectoryName) | 判斷當前目錄下指定的子目錄是否存在。 參數說明: RemoteDirectoryName: 指定的目錄名 |
FileExist(string RemoteFileName) | 判斷一個遠程文件是否存在服務器當前目錄下面。 參數說明: RemoteFileName: 遠程文件名 |
DeleteFile(string RemoteFileName) | 從FTP服務器上面刪除一個文件。 參數說明: RemoteFileName: 遠程文件名 |
ReName(string RemoteFileName, string NewFileName) | 更改一個文件的名稱或一個目錄的名稱。 參數說明: RemoteFileName: 原始文件或目錄名稱 NewFileName: 新的文件或目錄的名稱 |
CopyFileToAnotherDirectory(string RemoteFile, string DirectoryName) | 把當前目錄下面的一個文件拷貝到服務器上面另外的目錄中,注意,拷貝文件之后,當前工作目錄還是文件原來所在的目錄。 參數說明: RemoteFile: 當前目錄下的文件名 DirectoryName: 新目錄名稱。 說明:如果新目錄是當前目錄的子目錄,則直接指定子目錄。如: SubDirectory1/SubDirectory2 ; 如果新目錄不是當前目錄的子目錄,則必須從根目錄一級一級的指定。如:./NewDirectory/SubDirectory1/SubDirectory2 |
MoveFileToAnotherDirectory(string RemoteFile, string DirectoryName) | 把當前目錄下面的一個文件移動到服務器上面另外的目錄中,注意,移動文件之后,當前工作目錄還是文件原來所在的目錄。 參數說明: RemoteFile: 當前目錄下的文件名 DirectoryName: 新目錄名稱。 說明:如果新目錄是當前目錄的子目錄,則直接指定子目錄。如: SubDirectory1/SubDirectory2 ; 如果新目錄不是當前目錄的子目錄,則必須從根目錄一級一級的指定。如:./NewDirectory/SubDirectory1/SubDirectory2 |
MakeDirectory(string DirectoryName) | 在FTP服務器上當前工作目錄建立一個子目錄。 參數說明: DirectoryName: 子目錄名稱 |
RemoveDirectory(string DirectoryName) | 從當前工作目錄中刪除一個子目錄。 參數說明: DirectoryName: 子目錄名稱 |
IsValidPathChars(string DirectoryName) | 判斷目錄名中字符是否合法。 參數說明: DirectoryName: 目錄名稱 |
IsValidFileChars(string FileName) | 判斷文件名中字符是否合法。 參數說明: FileName: 文件名稱 |
GotoDirectory(string DirectoryName) | 進入一個目錄。 參數說明: DirectoryName: 新目錄的名字。 說明:如果新目錄是當前目錄的子目錄,則直接指定子目錄。如: SubDirectory1/SubDirectory2 ; 如果新目錄不是當前目錄的子目錄,則必須從根目錄一級一級的指定。如:./NewDirectory/SubDirectory1/SubDirectory2 |
EnterOneSubDirectory(string DirectoryName) | 從當前工作目錄進入一個子目錄。 參數說明: DirectoryName: 子目錄名稱 |
ComeoutDirectory() | 從當前工作目錄往上一級目錄。 |
|
|
公共事件
名稱 | 說明 |
DownloadProgressChanged | 異步下載進度發生改變觸發的事件 |
DownloadDataCompleted | 異步下載文件完成之后觸發的事件 |
UploadProgressChanged | 異步上傳進度發生改變觸發的事件 |
UploadFileCompleted | 異步上傳文件完成之后觸發的事件 |
|
|
其他說明
序號 | 說明 |
1 | 支持代理服務器。 可以顯式地給Proxy屬性賦值;也可以在構造函數中傳遞Proxy對象。如果代理需要登錄用戶和密碼,則設置Proxy的Credentials屬性,例如: Proxy.Credentials = new NETworkCredential(UserName, Password) 如果沒有代理,則無需給Proxy屬性賦值或者在構造函數中無需傳遞Proxy參數。 |
2 | 下載文件和上傳文件大小最大受Int32.MaxValue限制,所以最大處理只能是2,147,483,647字節。如果您想處理更大的文件,請自己修改代碼中對文件打開和讀寫操作部分的代碼使其適應您的要求。 |
3 | 只有在異步上傳文件或者異步下載文件的時候,才支持進度百分比觸發事件和下載(上傳)完成事件。 |
4 | 由于服務器未發送文件大小,因此被動 FTP 文件傳輸總是將進度百分比顯示為零。若要顯示進度,可以通過重寫 GetWebRequest 虛擬方法來將 FTP 連接更改為活動狀態。所以,我們在clsFTP類中另外使用內部類MyWebClient
|
5 | 在列出文件和目錄的時候,clsFTP類區分出了所獲得的響應數據哪些是文件,哪些是目錄。同時,考慮到了FTP服務器上面目錄樣式為MS DOS和UNIX兩種表現形式的不同。 |
6 | |
|
|
|
|
AspNet技術:asp.net 一個封裝比較完整的FTP類,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。