【问题标题】:Downloading Txt File From Ftp Any Txt File With Out Knowing Name Of txt File在不知道 txt 文件名称的情况下从 Ftp 下载任何 Txt 文件
【发布时间】:2014-08-10 21:44:27
【问题描述】:

我想从 ftp 下载 txt 文件,但不知道要下载的任何 txt 文件的名称我有一个下载 txt 文件的代码,但在不知道名称的情况下无法下载任何 txt 文件,请帮助我在下面显示该代码。

    string localPath = @"E:\";
    string fileName = "sample.txt";
    try
    {

        FtpWebRequest requestFileDownload = (FtpWebRequest)WebRequest.Create("ftp://---.--.---.--/" + fileName);
        requestFileDownload.Credentials = new NetworkCredential("----", "----");
        requestFileDownload.Method = WebRequestMethods.Ftp.DownloadFile;



        FtpWebResponse responseFileDownload = (FtpWebResponse)requestFileDownload.GetResponse();

        string _filename = "----.txt";

        Stream responseStream = responseFileDownload.GetResponseStream();
        FileStream writeStream = new FileStream(localPath + _filename, FileMode.Create);

        int Length = 2048;
        Byte[] buffer = new Byte[Length];
        int bytesRead = responseStream.Read(buffer, 0, Length);

        while (bytesRead > 0)
        {
            writeStream.Write(buffer, 0, bytesRead);
            bytesRead = responseStream.Read(buffer, 0, Length);
        }

        responseStream.Close();
        writeStream.Close();

        requestFileDownload = null;
        responseFileDownload = null;

【问题讨论】:

  • 不知道名字的你想下载什么?只是一切?
  • 你能告诉我在.txt之前如何定义
  • 定义什么?您需要在问题中更具描述性。如何知道你不知道的东西?
  • 如果 ftp 中有 4 个文件,我必须在不知道文件名的情况下一个一个地下载这些文件

标签: c# asp.net


【解决方案1】:

您可以列出 ftp 目录中的所有文件。见Listing all files from ftp server using C#


示例用法:

    Dim FTPfiles = GetListOfFilesinFTPdirectory(FtpDir, ftpusername, ftppassword, New String() {".txt", ".aspx"})
    For Each f In FTPfiles
        Debug.WriteLine(f)
    Next

使用以下函数列出 FTP 目录中的文件。 (只返回文件名)

''' <summary>
''' 
''' </summary>
''' <param name="FtpDir">ftp://------@ftp.domainname.com/www/en/...</param>
''' <param name="ftpusername">FTP user name</param>
''' <param name="ftppassword">FTP user password</param>
''' <param name="fileExtensions">file extension e.g New String() {".txt", ".aspx", ".png"}, Nothing means list all files.</param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function GetListOfFilesinFTPdirectory(FtpDir As String, ftpusername As String, ftppassword As String, Optional fileExtensions As String() = Nothing) As List(Of String)

    Dim FTPReq As FtpWebRequest = DirectCast(WebRequest.Create(FtpDir), FtpWebRequest)
    FTPReq.Method = WebRequestMethods.Ftp.ListDirectoryDetails
    FTPReq.Credentials = New NetworkCredential(ftpusername, ftppassword)
    FTPReq.UseBinary = True
    FTPReq.KeepAlive = False

    Using response As FtpWebResponse = DirectCast(FTPReq.GetResponse(), FtpWebResponse)
        Using responseStream As Stream = response.GetResponseStream()
            Using reader As New StreamReader(responseStream)
                Dim RawDirectoryListingData As String = reader.ReadToEnd()
                'Debug.WriteLine(RawDirectoryListingData)

                'Windows FTP Server Response Format
                'DateCreated        IsDirectory   Size  FileName

                '06-09-14  07:01PM                39778 MasterPage.master
                '06-09-14  07:01PM                 2806 MasterPage.master.vb
                '09-01-10  01:43PM                 1046 masterpagelink.txt
                '12-29-10  06:16PM                75293 MasterPageTR.master
                '12-29-10  06:16PM                10500 MasterPageTR.master.vb
                '09-01-10  01:43PM                10725 meebotest.aspx
                '01-17-13  03:54PM       <DIR>          mp4player
                '11-30-11  12:40PM                17164 news.aspx
                '11-30-11  12:40PM                 2342 news.aspx.vb
                '12-14-10  10:17PM                12889 news.xml
                '12-14-10  08:14PM                16379 news1.xml


                Dim lines() As String = Split(RawDirectoryListingData, Environment.NewLine)

                Dim FTPFileNames As New List(Of String)

                For Each line As String In lines
                    If String.IsNullOrEmpty(line) Then Continue For
                    Try

                        ''Parse date
                        'Dim DateCreatedStr As String = line.Substring(0, 17)
                        'Dim DateCreated As DateTime = Nothing
                        'DateTime.TryParse(DateCreatedStr, DateCreated)

                        line = line.Remove(0, 24)

                        ' Parse <DIR>
                        Dim dirStr As String = line.Substring(0, 5)
                        Dim isDirectory As Boolean = dirStr.Equals("<dir>", StringComparison.InvariantCultureIgnoreCase)
                        line = line.Remove(0, 5)
                        line = line.Remove(0, 10)

                        ' Parse name
                        Dim fName As String = line
                        If String.IsNullOrEmpty(fName) Then Continue For

                        If Not isDirectory Then
                            If fileExtensions Is Nothing OrElse fileExtensions.Length < 1 Then
                                FTPFileNames.Add(fName)
                            Else
                                For Each ext As String In fileExtensions
                                    Dim fExt As String = IO.Path.GetExtension(fName)
                                    If fExt.Equals(ext, StringComparison.InvariantCultureIgnoreCase) Then
                                        FTPFileNames.Add(fName)
                                        Exit For
                                    End If
                                Next
                            End If
                        End If
                    Catch ex As Exception
                        Continue For
                    End Try
                Next
                Return FTPFileNames
            End Using
        End Using
    End Using

    Return Nothing

End Function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-03
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多