通过ftp将多个大文件上传到一个文件

问题描述 投票:1回答:2

我正在尝试通过将一个大文件上传到一个位置来将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()
vb.net visual-studio-2010 ftpwebrequest
2个回答
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()

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

通过分块写入上传。

© www.soinside.com 2019 - 2024. All rights reserved.