程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> asp.net 一個封裝比較完整的FTP類

asp.net 一個封裝比較完整的FTP類

編輯:ASP.NET基礎
先看這個簡單的
復制代碼 代碼如下:
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

支持在FTP服務器上面不同目錄之間移動文件和拷貝文件的功能。移動文件的方法比較巧妙,只是拷貝文件所使用的方法不太理想。

 

 

 

 

打包下載 discuz的比較好用
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved