ftp将多个大文件上传到一个文件中

时间:2011-05-09 16:42:44

标签: vb.net visual-studio-2010 ftpwebrequest

我试图通过将一个文件上传到某个位置,将2个大文件上传到ftp服务器。如果文件很小但是它与大文件崩溃,我可以使用它。

For i As Integer = 0 To filelist.Count() - 1

        Dim fRequest As FtpWebRequest = WebRequest.Create(ftpPath & "/Reports/" & filelist.Item(i))
        fRequest.Credentials = New NetworkCredential(username, psswd)
        fRequest.KeepAlive = False
        fRequest.Proxy = Nothing
        fRequest.UsePassive = True
        fRequest.UseBinary = True
        fRequest.Method = WebRequestMethods.Ftp.DownloadFile
        fRequest.Timeout = 30000

        Try
            ' read in file...

            ' upload file...
            Dim fresponse As FtpWebResponse = DirectCast(fRequest.GetResponse(), FtpWebResponse)
            Dim fstream As FileStream = fileobj.OpenRead()
            Dim sStream As Stream = fRequest.GetRequestStream()

            Dim reader As New StreamReader(fstream)
            swriter.WriteLine(reader.ReadToEnd)
            swriter.Flush()
            fstream.Close()
            fRequest.Abort()



        Catch ex As Exception
            appLogs.constructLog(ex.Message.ToString & " @ ", True, True)
            errorReporting(ex.Message.ToString & fileItem)
        End Try
    Next

    swriter.Close()
    swriter.Dispose()

2 个答案:

答案 0 :(得分:1)

以下实际上有效,我最终可以上传10gb +文件

            Dim bytesread As Byte = 0
            Dim buffer As Integer = 2
            Dim fRequest As FtpWebRequest = WebRequest.Create(UPloaddir & "/" & filenameup & ".bak")
            ' fRequest.Credentials = New NetworkCredential(username, psswd)
            fRequest.KeepAlive = False
            fRequest.Proxy = Nothing
            fRequest.UsePassive = True
            fRequest.UseBinary = False
            fRequest.Method = WebRequestMethods.Ftp.UploadFile
            fRequest.Timeout = 180000

            '   Try
            ' read in file...
            Dim fs As FileStream = File.OpenRead(folder & "\" & fi.Name)
            Dim bFile As Byte() = New Byte(1) {}
            Dim fstream As Stream = fRequest.GetRequestStream
            ' upload file...
            Do
                bytesread = fs.Read(bFile, 0, buffer)
                fstream.Write(bFile, 0, bFile.Length)
            Loop Until bytesread = 0
            fstream.Close()
            fstream.Dispose()

答案 1 :(得分:0)

   Dim filename As String = fileobj.Name
    Dim bytesread As Integer = 0
    Dim buffer As Integer = 8100

    Dim fRequest As FtpWebRequest = WebRequest.Create(ftpPath & "/Logs/" & filename)
    fRequest.Credentials = New NetworkCredential(username, psswd)
    fRequest.KeepAlive = False
    fRequest.Proxy = Nothing
    fRequest.UsePassive = True
    fRequest.UseBinary = False
    fRequest.Method = WebRequestMethods.Ftp.UploadFile
    fRequest.Timeout = 180000

    Try
        ' read in file...
        'Dim reader As New StreamReader(fileItem)
        Dim fs As FileStream = File.OpenRead(fileItem)
        Dim bFile As Byte() = New Byte(8100) {}
        Dim fstream As Stream = fRequest.GetRequestStream
        ' upload file...
        Do
            bytesread = fs.Read(bFile, 0, buffer)
            fs.Read(bFile, 0, buffer)
            fstream.Write(bFile, 0, bFile.Length)
        Loop Until bytesread = 0
        fstream.Close()
        fstream.Dispose()

    Catch ex As Exception
        appLogs.constructLog(ex.Message.ToString & " @ ", True, True)
        errorReporting(ex.Message.ToString & fileItem)
    End Try

以大块写的方式上传。