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

來源:互聯網
上載者:User

先看這個簡單的 複製代碼 代碼如下: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登入使用者密碼、Proxy 伺服器對象初始化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對象。如果代理需要登入使用者和密碼,則設定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的比較好用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.