asp.net 一個(gè)封裝比較完整的FTP類(lèi)
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鏈接
ü 支持代理
ü 多種重載的同步上傳文件
ü 多種重載的異步上傳文件
ü 多種重載的同步下載文件
ü 多種重載的異步下載文件
ü 上傳文件的進(jìn)度百分比
ü 下載文件的進(jìn)度白分比
ü 有區(qū)分的列出目錄或者文件的信息(考慮到MS DOS顯示格式和UNIX格式)
ü 目錄或文件存在的判斷
ü 刪除文件
ü 重命名文件、目錄
ü 在FTP服務(wù)器上面拷貝、移動(dòng)文件(許多人可能在苦苦尋找這個(gè)功能)
ü 建立、刪除目錄
ü 目錄切換操作(很新穎哦 J)
公共構(gòu)造函數(shù)
名稱(chēng) |
說(shuō)明 |
clsFTP() |
初始化clsFtp類(lèi)的新實(shí)例 |
clsFTP(Uri FtpUri, string strUserName, string strPassword) |
由FTP地址、FTP登錄用戶(hù)信息、FTP登錄用戶(hù)密碼初始化clsFtp類(lèi)的新實(shí)例 |
clsFTP(Uri FtpUri, string strUserName, string strPassword, WebProxy objProxy) |
由FTP地址、FTP登錄用戶(hù)信息、FTP登錄用戶(hù)密碼、代理服務(wù)器對(duì)象初始化clsFtp類(lèi)的新實(shí)例 |
|
|
公共屬性
名稱(chēng) |
說(shuō)明 |
Uri |
獲取或設(shè)置FTP服務(wù)器地址 |
DirectoryPath |
獲取當(dāng)前工作目錄 |
UserName |
獲取或設(shè)置FTP登錄用戶(hù) |
Password |
獲取或設(shè)置FTP登錄密碼 |
Proxy |
獲取或設(shè)置連接FTP服務(wù)器的代理服務(wù) |
ErrorMsg |
獲取操在返回的錯(cuò)誤信息 |
公共方法
名稱(chēng) |
說(shuō)明 |
DownloadFile(string RemoteFileName, string LocalPath) |
從FTP服務(wù)器下載文件,使用與遠(yuǎn)程文件同名的文件名來(lái)保存文件。 參數(shù)說(shuō)明: RemoteFileName: 遠(yuǎn)程文件名 LocalPath: 本地路徑 |
DownloadFile(string RemoteFileName, string LocalPath, string LocalFileName) |
從FTP服務(wù)器下載文件,指定本地路徑和本地文件名。 參數(shù)說(shuō)明: LocalPath: 本地路徑 LocalFilePath: 保存文件的本地路徑,后面帶有"\" LocalFileName: 保存本地的文件名 |
DownloadFile(string RemoteFileName) |
從FTP服務(wù)器下載文件,返回文件二進(jìn)制數(shù)據(jù)。 參數(shù)說(shuō)明: RemoteFileName: 遠(yuǎn)程文件名 |
DownloadFileAsync(string RemoteFileName, string LocalPath, string LocalFileName) |
從FTP服務(wù)器異步下載文件,指定本地路徑和本地文件名。 參數(shù)說(shuō)明: RemoteFileName: 遠(yuǎn)程文件名 LocalPath: 保存文件的本地路徑,后面帶有"\" LocalFileName: 保存本地的文件名 |
DownloadFileAsync(string RemoteFileName, string LocalFullPath) |
從FTP服務(wù)器異步下載文件,指定本地完整路徑文件名。 參數(shù)說(shuō)明: RemoteFileName: 遠(yuǎn)程文件名 LocalFullPath: 本地完整路徑文件名 |
UploadFile(string LocalFullPath) |
上傳文件到FTP服務(wù)器。 參數(shù)說(shuō)明: LocalFullPath: 本地帶有完整路徑的文件名 |
UploadFile(string LocalFullPath, bool OverWriteRemoteFile) |
上傳文件到FTP服務(wù)器。 參數(shù)說(shuō)明: LocalFullPath: 本地帶有完整路徑的文件 OverWriteRemoteFile: 是否覆蓋遠(yuǎn)程服務(wù)器上面同名的文件 |
UploadFile(string LocalFullPath, string RemoteFileName) |
上傳文件到FTP服務(wù)器。 參數(shù)說(shuō)明: LocalFullPath: 本地帶有完整路徑的文件 RemoteFileName: 要在FTP服務(wù)器上面保存文件名 |
UploadFile(string LocalFullPath, string RemoteFileName, bool OverWriteRemoteFile) |
上傳文件到FTP服務(wù)器。 參數(shù)說(shuō)明: LocalFullPath: 本地帶有完整路徑的文件名 RemoteFileName: 要在FTP服務(wù)器上面保存文件名 OverWriteRemoteFile: 是否覆蓋遠(yuǎn)程服務(wù)器上面同名的文件 |
UploadFile(byte[] FileBytes, string RemoteFileName) |
上傳文件到FTP服務(wù)器。 參數(shù)說(shuō)明: FileBytes: 上傳的二進(jìn)制數(shù)據(jù) RemoteFileName: 要在FTP服務(wù)器上面保存文件名 |
UploadFile(byte[] FileBytes, string RemoteFileName, bool OverWriteRemoteFile) |
上傳文件到FTP服務(wù)器。 參數(shù)說(shuō)明: FileBytes: 文件二進(jìn)制內(nèi)容 RemoteFileName: 要在FTP服務(wù)器上面保存文件名 OverWriteRemoteFile: 是否覆蓋遠(yuǎn)程服務(wù)器上面同名的文件 |
UploadFileAsync(string LocalFullPath) |
異步上傳文件到FTP服務(wù)器。 參數(shù)說(shuō)明: LocalFullPath: 本地帶有完整路徑的文件名 |
UploadFileAsync(string LocalFullPath, bool OverWriteRemoteFile) |
異步上傳文件到FTP服務(wù)器。 參數(shù)說(shuō)明: LocalFullPath: 本地帶有完整路徑的文件 OverWriteRemoteFile: 是否覆蓋遠(yuǎn)程服務(wù)器上面同名的文件 |
UploadFileAsync(string LocalFullPath, string RemoteFileName) |
異步上傳文件到FTP服務(wù)器。 參數(shù)說(shuō)明: LocalFullPath: 本地帶有完整路徑的文件 RemoteFileName: 要在FTP服務(wù)器上面保存文件名 |
UploadFileAsync(string LocalFullPath, string RemoteFileName, bool OverWriteRemoteFile) |
異步上傳文件到FTP服務(wù)器。 參數(shù)說(shuō)明: LocalFullPath: 本地帶有完整路徑的文件名 RemoteFileName: 要在FTP服務(wù)器上面保存文件名 OverWriteRemoteFile: 是否覆蓋遠(yuǎn)程服務(wù)器上面同名的文件 |
UploadFileAsync(byte[] FileBytes, string RemoteFileName) |
異步上傳文件到FTP服務(wù)器。 參數(shù)說(shuō)明: FileBytes: 上傳的二進(jìn)制數(shù)據(jù) RemoteFileName: 要在FTP服務(wù)器上面保存文件名 |
UploadFileAsync(byte[] FileBytes, string RemoteFileName, bool OverWriteRemoteFile) |
異步上傳文件到FTP服務(wù)器。 參數(shù)說(shuō)明: FileBytes: 文件二進(jìn)制內(nèi)容 RemoteFileName: 要在FTP服務(wù)器上面保存文件名 OverWriteRemoteFile: 是否覆蓋遠(yuǎn)程服務(wù)器上面同名的文件 |
ListFilesAndDirectories() |
列出FTP服務(wù)器上面當(dāng)前目錄的所有文件和目錄。 |
ListFiles() |
列出FTP服務(wù)器上面當(dāng)前目錄的所有文件。 |
ListDirectories() |
列出FTP服務(wù)器上面當(dāng)前目錄的所有的目錄。 |
DirectoryExist(string RemoteDirectoryName) |
判斷當(dāng)前目錄下指定的子目錄是否存在。 參數(shù)說(shuō)明: RemoteDirectoryName: 指定的目錄名 |
FileExist(string RemoteFileName) |
判斷一個(gè)遠(yuǎn)程文件是否存在服務(wù)器當(dāng)前目錄下面。 參數(shù)說(shuō)明: RemoteFileName: 遠(yuǎn)程文件名 |
DeleteFile(string RemoteFileName) |
從FTP服務(wù)器上面刪除一個(gè)文件。 參數(shù)說(shuō)明: RemoteFileName: 遠(yuǎn)程文件名 |
ReName(string RemoteFileName, string NewFileName) |
更改一個(gè)文件的名稱(chēng)或一個(gè)目錄的名稱(chēng)。 參數(shù)說(shuō)明: RemoteFileName: 原始文件或目錄名稱(chēng) NewFileName: 新的文件或目錄的名稱(chēng) |
CopyFileToAnotherDirectory(string RemoteFile, string DirectoryName) |
把當(dāng)前目錄下面的一個(gè)文件拷貝到服務(wù)器上面另外的目錄中,注意,拷貝文件之后,當(dāng)前工作目錄還是文件原來(lái)所在的目錄。 參數(shù)說(shuō)明: RemoteFile: 當(dāng)前目錄下的文件名 DirectoryName: 新目錄名稱(chēng)。 說(shuō)明:如果新目錄是當(dāng)前目錄的子目錄,則直接指定子目錄。如: SubDirectory1/SubDirectory2 ; 如果新目錄不是當(dāng)前目錄的子目錄,則必須從根目錄一級(jí)一級(jí)的指定。如:./NewDirectory/SubDirectory1/SubDirectory2 |
MoveFileToAnotherDirectory(string RemoteFile, string DirectoryName) |
把當(dāng)前目錄下面的一個(gè)文件移動(dòng)到服務(wù)器上面另外的目錄中,注意,移動(dòng)文件之后,當(dāng)前工作目錄還是文件原來(lái)所在的目錄。 參數(shù)說(shuō)明: RemoteFile: 當(dāng)前目錄下的文件名 DirectoryName: 新目錄名稱(chēng)。 說(shuō)明:如果新目錄是當(dāng)前目錄的子目錄,則直接指定子目錄。如: SubDirectory1/SubDirectory2 ; 如果新目錄不是當(dāng)前目錄的子目錄,則必須從根目錄一級(jí)一級(jí)的指定。如:./NewDirectory/SubDirectory1/SubDirectory2 |
MakeDirectory(string DirectoryName) |
在FTP服務(wù)器上當(dāng)前工作目錄建立一個(gè)子目錄。 參數(shù)說(shuō)明: DirectoryName: 子目錄名稱(chēng) |
RemoveDirectory(string DirectoryName) |
從當(dāng)前工作目錄中刪除一個(gè)子目錄。 參數(shù)說(shuō)明: DirectoryName: 子目錄名稱(chēng) |
IsValidPathChars(string DirectoryName) |
判斷目錄名中字符是否合法。 參數(shù)說(shuō)明: DirectoryName: 目錄名稱(chēng) |
IsValidFileChars(string FileName) |
判斷文件名中字符是否合法。 參數(shù)說(shuō)明: FileName: 文件名稱(chēng) |
GotoDirectory(string DirectoryName) |
進(jìn)入一個(gè)目錄。 參數(shù)說(shuō)明: DirectoryName: 新目錄的名字。 說(shuō)明:如果新目錄是當(dāng)前目錄的子目錄,則直接指定子目錄。如: SubDirectory1/SubDirectory2 ; 如果新目錄不是當(dāng)前目錄的子目錄,則必須從根目錄一級(jí)一級(jí)的指定。如:./NewDirectory/SubDirectory1/SubDirectory2 |
EnterOneSubDirectory(string DirectoryName) |
從當(dāng)前工作目錄進(jìn)入一個(gè)子目錄。 參數(shù)說(shuō)明: DirectoryName: 子目錄名稱(chēng) |
ComeoutDirectory() |
從當(dāng)前工作目錄往上一級(jí)目錄。 |
|
|
公共事件
名稱(chēng) |
說(shuō)明 |
DownloadProgressChanged |
異步下載進(jìn)度發(fā)生改變觸發(fā)的事件 |
DownloadDataCompleted |
異步下載文件完成之后觸發(fā)的事件 |
UploadProgressChanged |
異步上傳進(jìn)度發(fā)生改變觸發(fā)的事件 |
UploadFileCompleted |
異步上傳文件完成之后觸發(fā)的事件 |
|
|
其他說(shuō)明
序號(hào) |
說(shuō)明 |
1 |
支持代理服務(wù)器。 可以顯式地給Proxy屬性賦值;也可以在構(gòu)造函數(shù)中傳遞Proxy對(duì)象。如果代理需要登錄用戶(hù)和密碼,則設(shè)置Proxy的Credentials屬性,例如: Proxy.Credentials = new NetworkCredential(UserName, Password) 如果沒(méi)有代理,則無(wú)需給Proxy屬性賦值或者在構(gòu)造函數(shù)中無(wú)需傳遞Proxy參數(shù)。 |
2 |
下載文件和上傳文件大小最大受Int32.MaxValue限制,所以最大處理只能是2,147,483,647字節(jié)。如果您想處理更大的文件,請(qǐng)自己修改代碼中對(duì)文件打開(kāi)和讀寫(xiě)操作部分的代碼使其適應(yīng)您的要求。 |
3 |
只有在異步上傳文件或者異步下載文件的時(shí)候,才支持進(jìn)度百分比觸發(fā)事件和下載(上傳)完成事件。 |
4 |
由于服務(wù)器未發(fā)送文件大小,因此被動(dòng) FTP 文件傳輸總是將進(jìn)度百分比顯示為零。若要顯示進(jìn)度,可以通過(guò)重寫(xiě) GetWebRequest 虛擬方法來(lái)將 FTP 連接更改為活動(dòng)狀態(tài)。所以,我們?cè)赾lsFTP類(lèi)中另外使用內(nèi)部類(lèi)MyWebClient
|
5 |
在列出文件和目錄的時(shí)候,clsFTP類(lèi)區(qū)分出了所獲得的響應(yīng)數(shù)據(jù)哪些是文件,哪些是目錄。同時(shí),考慮到了FTP服務(wù)器上面目錄樣式為MS DOS和UNIX兩種表現(xiàn)形式的不同。 |
6 |
支持在FTP服務(wù)器上面不同目錄之間移動(dòng)文件和拷貝文件的功能。移動(dòng)文件的方法比較巧妙,只是拷貝文件所使用的方法不太理想。 |
|
|
|
|
相關(guān)文章
詳解ASP.NET-----Repeater數(shù)據(jù)控件的用法總結(jié)
本篇文章主要介紹了ASP.NET--Repeater數(shù)據(jù)控件的用法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。2016-11-11asp.net服務(wù)器端指令include的使用及優(yōu)勢(shì)介紹
將指定文件的內(nèi)容插入 ASP.NET 文件中,包括網(wǎng)頁(yè)(.aspx 文件)、用戶(hù)控件文件(.ascx 文件)和 Global.asax 文件2013-04-04Asp.net圖片上傳實(shí)現(xiàn)預(yù)覽效果的簡(jiǎn)單代碼
這篇文章介紹了Asp.net圖片上傳實(shí)現(xiàn)預(yù)覽效果的簡(jiǎn)單代碼,有需要的朋友可以參考一下2013-07-07ASP.NET2.0緩存(Cache)技術(shù)深入理解
緩存技術(shù)是ASP.NET2.0非常重要的一個(gè)特性,它提供了一種非常好的本地?cái)?shù)據(jù)緩存機(jī)制,從而有效的提高數(shù)據(jù)訪(fǎng)問(wèn)的性能2012-11-11asp.net下用url重寫(xiě)URLReWriter實(shí)現(xiàn)任意二級(jí)域名的方法
asp.net下用url重寫(xiě)URLReWriter實(shí)現(xiàn)任意二級(jí)域名的方法...2007-03-03.Net Core中使用ref和Span<T>提高程序性能的實(shí)現(xiàn)代碼
這篇文章主要介紹了.Net Core中使用ref和Span<T>提高程序性能的簡(jiǎn)單實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-05-05使用EF Code First搭建簡(jiǎn)易ASP.NET MVC網(wǎng)站并允許數(shù)據(jù)庫(kù)遷移
這篇文章介紹了使用EF Code First搭建簡(jiǎn)易ASP.NET MVC網(wǎng)站并允許數(shù)據(jù)庫(kù)遷移的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09ASP.NET中為T(mén)extBox中添加calendar.js示例代碼
為T(mén)extBox中添加calendar.js對(duì)于一些新手朋友確實(shí)有點(diǎn)難度,下面為大家介紹下ASP.NET中具體的實(shí)現(xiàn)方法2013-11-11