2011-05-09 4 views
1

J'essaye de télécharger 2 gros fichiers sur un serveur ftp en les téléchargeant en un seul fichier vers un emplacement. Je l'ai si les fichiers sont petits, mais il se bloque avec de gros fichiers.Téléchargement ftp de plusieurs fichiers volumineux dans un seul fichier

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() 

Répondre

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 

uploadés en écrivant en morceaux.

1

Le dessous fonctionne réellement et je peux enfin télécharger 10Go + fichiers

  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() 
Questions connexes