0

我们使用FTP taskinSSIS从 FTP 服务器下载大约 500 个文件,其中最大的文件大小约为 2 GB。50% 的时间下载失败。我们想在我们的SSIS包中实现一个步骤,FTP Server在我们尝试下载它们进行处理之前检索文件列表和文件大小。FTP Task没有检索文件列表和文件大小的操作。你能提供一个如何做到这一点的例子吗?

下面是Script Task我找到的用于检索文件名列表并存储在 XML 文件中的代码块。

    Dim ftpFileNameListXML As New StringBuilder
    ftpFileNameListXML.AppendLine("<filelist>")

    Dim ftpcm As ConnectionManager = Dts.Connections("FTP")
    Dim ftp As FtpClientConnection = _
                New FtpClientConnection(ftpcm.AcquireConnection(Nothing))
    Dim ftpFileNames() As String
    Dim ftpFolderNames() As String

    ftp.Connect()
    ftp.SetWorkingDirectory(Dts.Variables("FtpWorkingDirectory").Value.ToString())
    ftp.GetListing(ftpFolderNames, ftpFileNames)
    ftp.Close()

    Dim i As Integer
    For i = 0 To ftpFileNames.GetUpperBound(0)
        ftpFileNameListXML.Append("<file name='")
        ftpFileNameListXML.Append(ftpFileNames(i))
        ftpFileNameListXML.AppendLine("'/>")
    Next i

    ftpFileNameListXML.AppendLine("</filelist>")
    Dts.Variables("FtpFileListXML").Value = ftpFileNameListXML.ToString()

    Dts.TaskResult = ScriptResults.Success
4

1 回答 1

1

这是在 VB 中获取文件大小的链接:http: //www.codeproject.com/Questions/205915/VB-NET-get-the-size-of-a-file-Downloading-in-FTP-S

“您应该使用 GetFileSize[^] 字段提前知道所选文件的大小。”

Dim ftp As Net.FtpWebRequest = GetRequest(URI)
ftp.Method = Net.WebRequestMethods.Ftp.GetFileSize

她是另一个链接http://www.dreamincode.net/forums/topic/317225-want-to-get-ftp-server-file-name-fil-size-in-listview/

尝试使用ListDirectoryDetails

于 2015-04-16T21:13:55.647 回答