欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#使用FtpWebRequest與FtpWebResponse完成FTP操作

 更新時(shí)間:2022年05月16日 14:36:25   作者:springsnow  
這篇文章介紹了C#使用FtpWebRequest與FtpWebResponse完成FTP操作的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、WebRequestMethods.Ftp類:

表示可與 FTP 請求一起使用的 FTP 協(xié)議方法的類型。

  • Append?File:表示要用于將文件追加到 FTP 服務(wù)器上的現(xiàn)有文件的 FTP APPE 協(xié)議方法。
  • Delete?File:表示要用于刪除 FTP 服務(wù)器上的文件的 FTP DELE 協(xié)議方法。
  • Download?File:表示要用于從 FTP 服務(wù)器下載文件的 FTP RETR 協(xié)議方法。
  • Get?Date?Timestamp:表示要用于從 FTP 服務(wù)器上的文件檢索日期時(shí)間戳的 FTP MDTM 協(xié)議方法。
  • Get?File?Size:表示要用于檢索 FTP 服務(wù)器上的文件大小的 FTP SIZE 協(xié)議方法。
  • List?Directory:表示獲取 FTP 服務(wù)器上的文件的簡短列表的 FTP NLIST 協(xié)議方法。
  • List?Directory?Details:表示獲取 FTP 服務(wù)器上的文件的詳細(xì)列表的 FTP LIST 協(xié)議方法。
  • Make?Directory:表示在 FTP 服務(wù)器上創(chuàng)建目錄的 FTP MKD 協(xié)議方法。
  • Print?Working?Directory:表示打印當(dāng)前工作目錄的名稱的 FTP PWD 協(xié)議方法。
  • Remove?Directory:表示移除目錄的 FTP RMD 協(xié)議方法。
  • Rename:表示重命名目錄的 FTP RENAME 協(xié)議方法。
  • Upload?File:表示將文件上載到 FTP 服務(wù)器的 FTP STOR 協(xié)議方法。
  • Upload?File?With?Unique?Name:表示將具有唯一名稱的文件上載到 FTP 服務(wù)器的 FTP STOU 協(xié)議方法。

二、上傳文件:

OpenFileDialog opFilDlg = new OpenFileDialog();
if (opFilDlg.ShowDialog() == DialogResult.OK)
{   ftp = new YBBFTPClass("hz.a.cn", "", "csp", "welcome", 0);
    ftp.UploadFile(opFilDlg.FileName);
    MessageBox.Show("上傳成功");
}
/// <summary>
/// 文件上傳
/// </summary>
/// <param name="filename">本地文件路徑</param>
public void UploadFile(string filename)
{
    FileInfo fileInf = new FileInfo(filename);
    string uri = "ftp://" + RemoteHost + "/" + fileInf.Name;
    FtpWebRequest reqFTP;

    reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + RemoteHost + "/" + fileInf.Name));// 根據(jù)uri創(chuàng)建FtpWebRequest對象
    reqFTP.Credentials = new NetworkCredential(RemoteUser, RemotePass);    // ftp用戶名和密碼
    reqFTP.KeepAlive = false;    // 默認(rèn)為true,連接不會被關(guān)閉, 在一個(gè)命令之后被執(zhí)行
    reqFTP.Method = WebRequestMethods.Ftp.UploadFile;    // 指定執(zhí)行什么命令
    reqFTP.UseBinary = true;   // 指定數(shù)據(jù)傳輸類型
    reqFTP.ContentLength = fileInf.Length;    // 上傳文件時(shí)通知服務(wù)器文件的大小

    int contentLen;
    FileStream fileStream = fileInf.OpenRead(); // 打開一個(gè)文件讀取內(nèi)容到fileStream中
    contentLen = fileStream.Read(buffer, 0, buffer.Length); ;//從fileStream讀取數(shù)據(jù)到buffer中

    Stream requestStream = reqFTP.GetRequestStream();
    // 流內(nèi)容沒有結(jié)束
    while (contentLen != 0)
    {
        requestStream.Write(buffer, 0, contentLen);// 把內(nèi)容從buffer 寫入 requestStream中,完成上傳。
        contentLen = fileStream.Read(buffer, 0, buffer.Length);
    }

    // 關(guān)閉兩個(gè)流
    requestStream.Close();
    //uploadResponse = (FtpWebResponse)reqFTP.GetResponse();
    fileStream.Close();
}

三、下載文件

1、核心代碼

/// <summary>
/// 下載文件
/// </summary>
/// <param name="filePath">本地目錄</param>
/// <param name="fileName">遠(yuǎn)程路徑</param>
public void DownloadFile(string filePath, string fileName)
{
    FtpWebRequest reqFTP;
    try
    {
        FileStream fileStream = new FileStream(filePath + "\\" + fileName, FileMode.Create);

        reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + RemoteHost + "/" + fileName));
        reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
        reqFTP.UseBinary = true;
        reqFTP.Credentials = new NetworkCredential(RemoteUser, RemotePass);

        FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
        Stream responseStream = response.GetResponseStream();//從ftp響應(yīng)中獲得響應(yīng)流

        //long cl = response.ContentLength;
        byte[] buffer = new byte[1024];
        int readCount;

        readCount = responseStream.Read(buffer, 0, buffer.Length);//從ftp的responseStream讀取數(shù)據(jù)到buffer中
        while (readCount > 0)
        {
            fileStream.Write(buffer, 0, readCount);//從buffer讀取數(shù)據(jù)到fileStream中,完成下載
            readCount = responseStream.Read(buffer, 0, buffer.Length);
        }

        responseStream.Close();
        fileStream.Close();
        response.Close();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}

2、winform:

FolderBrowserDialog fldDlg = new FolderBrowserDialog();
if (txtUpload.Text.Trim().Length > 0)
{
    if (fldDlg.ShowDialog() == DialogResult.OK)
    {
        ftp.DownloadFile(fldDlg.SelectedPath, txtUpload.Text.Trim());
        MessageBox.Show("下載成功");
    }
}
else
{
    MessageBox.Show("Please enter the File name to download");
}

3、webform彈出下載提示:

FtpClient _client = new FtpClient();
Stream stream = _client.OpenRead(FtpFilePath, FtpDataType.Binary);

string FtpFilePath = Request.QueryString["FilePath"];
string _fname = Path.GetFileName(FtpFilePath);
Response.ContentType = "application/" + _fname.Split('.')[1];
Response.AddHeader("Content-disposition", "attachment; filename=" + _fname);

byte[] buffer = new byte[10240];
int readCount;
do
{
    readCount = stream.Read(buffer, 0, buffer.Length);
    Response.OutputStream.Write(buffer, 0, readCount);//持續(xù)寫入流
} while (readCount != 0);

Response.OutputStream.Write(buffer, 0, buffer.Length);

Response.End();

四、刪除文件

string uri = "ftp://" + RemoteHost + "/" + fileName;
FtpWebRequest reqFTP;
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + RemoteHost + "/" + fileName));

reqFTP.Credentials = new NetworkCredential(RemoteUser, RemotePass);
reqFTP.KeepAlive = false;
reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;

string result = String.Empty;
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
long size = response.ContentLength;
Stream datastream = response.GetResponseStream();
StreamReader sr = new StreamReader(datastream);
result = sr.ReadToEnd();
sr.Close();
datastream.Close();
response.Close();

完整代碼參考:

http://www.dbjr.com.cn/article/119779.htm

到此這篇關(guān)于C#使用FtpWebRequest與FtpWebResponse完成FTP操作的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Unity搖桿制作的方法

    Unity搖桿制作的方法

    這篇文章主要為大家詳細(xì)介紹了Unity搖桿制作的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C#使用對象序列化類庫MessasgePack

    C#使用對象序列化類庫MessasgePack

    這篇文章介紹了C#使用對象序列化類庫MessasgePack的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 3種C# 加載Word的方法

    3種C# 加載Word的方法

    本次經(jīng)驗(yàn)內(nèi)容分享通過C#程序來加載Word文檔的3種不同方法。分別是:加載本地Word文檔、以只讀模式加載Word文檔、從流加載Word 想具體了解的小伙伴請參考下文
    2021-09-09
  • C#中的多線程小試牛刀

    C#中的多線程小試牛刀

    這篇文章主要給大家介紹了關(guān)于C#中多線程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • C#使用IronPython調(diào)用Python

    C#使用IronPython調(diào)用Python

    這篇文章主要給大家介紹了關(guān)于C#使用IronPython調(diào)用Python的相關(guān)資料, c#利用IronPython調(diào)用python的過程中總會遇到種種問題,這里給大家總結(jié)下,需要的朋友可以參考下
    2023-07-07
  • C#實(shí)現(xiàn)Excel導(dǎo)入sqlite的方法

    C#實(shí)現(xiàn)Excel導(dǎo)入sqlite的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)Excel導(dǎo)入sqlite的方法,是C#程序設(shè)計(jì)中非常重要的一個(gè)實(shí)用技巧,需要的朋友可以參考下
    2014-09-09
  • C#中緩存System.Web.Caching用法總結(jié)

    C#中緩存System.Web.Caching用法總結(jié)

    本文詳細(xì)講解了C#中緩存System.Web.Caching的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#實(shí)現(xiàn)獲取電腦硬件顯卡核心代號信息

    C#實(shí)現(xiàn)獲取電腦硬件顯卡核心代號信息

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)獲取電腦硬件顯卡核心代號信息,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • Unity?百度AI實(shí)現(xiàn)Logo商標(biāo)識別

    Unity?百度AI實(shí)現(xiàn)Logo商標(biāo)識別

    本文主要介紹了Unity實(shí)現(xiàn)檢測和識別圖片中的品牌LOGO信息。即對于輸入的一張圖片(可正常解碼,且長寬比適宜),輸出圖片中LOGO的名稱、位置和置信度。需要的可以參考一下
    2022-01-01
  • C#實(shí)現(xiàn)數(shù)獨(dú)解法

    C#實(shí)現(xiàn)數(shù)獨(dú)解法

    這篇文章介紹了C#實(shí)現(xiàn)數(shù)獨(dú)解法的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06

最新評論