Search code examples
vb.netfile-uploadwebrequest

VB.net webrequest.uploadfile aborted error


I use webrequest uploadfile fuction. But I have error for big files in slow network. So I think maybe buffer or something help me

My code

Private Shared Function GetFileUploadResponse(ByVal fileToUpload As String, ByVal accessToken As String, ByVal uploadUrl As String) As UploadResponse
        Dim client = New WebClient()
        client.Headers.Add("Authorization", "OAuth " & accessToken)

        Dim responseBytes = client.UploadFile(uploadUrl, fileToUpload)

        Dim responseString = Encoding.UTF8.GetString(responseBytes)

        Dim response = JsonConvert.DeserializeObject(Of UploadResponse)(responseString)

        Return response



    End Function

when I try upload bigger 100 mb files error aborted.

I found this code but this is for FTP. I use normal webupload. I try to modify my code but give error every try

Dim request As FtpWebRequest =
    WebRequest.Create("ftp://ftp.example.com/remote/path/file.zip")
request.Credentials = New NetworkCredential("username", "password")
request.Method = WebRequestMethods.Ftp.UploadFile

Using fileStream As Stream = File.OpenRead("C:\local\path\file.zip"),
      ftpStream As Stream = request.GetRequestStream()
    Dim read As Integer
    Do
        Dim buffer() As Byte = New Byte(10240) {}
        read = fileStream.Read(buffer, 0, buffer.Length)
        If read > 0 Then
            ftpStream.Write(buffer, 0, read)
            Console.WriteLine("Uploaded {0} bytes", fileStream.Position)
        End If
    Loop While read > 0
End Using

Solution

  • solution found. problem about webclient timeout. this modifield webclient work good.

    Public Class BigWebClient
        Inherits WebClient
        Protected Overrides Function GetWebRequest(ByVal address As System.Uri) As System.Net.WebRequest
            Dim x As WebRequest = MyBase.GetWebRequest(address)
            x.Timeout = 60 * 60 * 1000
            Return x
        End Function
    End Class