2013-07-19 2 views
0

В настоящее время я загружаю все на свой веб-сервер с помощью FTPWebRequest. Я использую ZFTP на своем сервере и плачу за 1999 год в год за лицензию. ZFTP очень глючит, поэтому я пытался использовать другие способы загрузки изображений на свой веб-сервер. До сих пор я не имел никакого успеха и не доверял мне, это не из-за отсутствия попыток. Практически все, что я пытаюсь сделать, это загрузить изображение с моего компьютера на домашний/веб-сервер так же, как с FTPWebRequest, но вы хотите использовать HTTPWebRequest или что-то подобное. Ниже приведены 4 моих попытки, хотя я попытался все в MSDN и конвертировал некоторые образцы C# в VB, но не повезло.Загрузить изображение на Главная/Веб-сервер VB.net

Public Sub LoadImage() 
     'Try1 
     Dim client As New System.Net.WebClient 
     Dim uriString As New System.Uri("http://XXXXXXXXXXXX/cart.png") 
     client.UploadFileAsync(uriString, "C:\Users\dstrange\Pictures\add_to_cart.png") 

     'Try 2 
     Try 
      My.Computer.Network.UploadFile("C:\Users\dstrange\Pictures\add_to_cart.png", "http://XXXXXXXXXXXX/img.png", "tyjacobs", "", True, 500) 
     Catch ex As Exception 
      MsgBox(ex.ToString) 
     End Try 

     'Try 4 
     My.Computer.Network.UploadFile("C:\Users\dstrange\Pictures\add_to_cart.png", "http://XXXXXXXXXXX/somefile.png", "tyjacobs", "") 


     'Try 3 
     Dim fileToUpload As String = "C:\Users\dstrange\Pictures\add_to_cart.png" 
     Dim fileLength As Long = My.Computer.FileSystem.GetFileInfo(fileToUpload).Length 

     Dim url As String = "http://XXXXXXXXXXX/img" 
     Dim port As String = "443" 

     If port <> "" Then 

      Dim u As New Uri(url) 

      Dim host As String = u.Host 

      url = url.Replace(host, host & ":" & port) 
      url = url.TrimEnd("/"c) & "/" & IO.Path.GetFileName(fileToUpload) 

      Dim userName As String = "XXXXXXXXXXXX" 
      Dim password As String = "XXXXXXXX" 

      request = DirectCast(System.Net.HttpWebRequest.Create(url), HttpWebRequest) 

      request.Credentials = New NetworkCredential(userName, password) 

      request.Method = WebRequestMethods.Http.Put 

      request.ContentLength = fileLength 

      request.SendChunked = True 
      request.Headers.Add("Translate: f") 
      request.AllowWriteStreamBuffering = True 

      Dim s As IO.Stream = request.GetRequestStream() 

      Dim fs As New IO.FileStream(fileToUpload, IO.FileMode.Open, _ 
          IO.FileAccess.Read) 

      Dim byteTransferRate As Integer = 1024 
      Dim bytes(byteTransferRate - 1) As Byte 
      Dim bytesRead As Integer = 0 
      totalBytesRead = 0 

      Do 

       bytesRead = fs.Read(bytes, 0, bytes.Length) 

       If bytesRead > 0 Then 

        totalBytesRead += bytesRead 

        s.Write(bytes, 0, bytesRead) 

       End If 

      Loop While bytesRead > 0 

      s.Close() 
      s.Dispose() 
      s = Nothing 

      'Close the file 
      fs.Close() 
      fs.Dispose() 
      fs = Nothing 


     End If 
     Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse) 
     Dim code As HttpStatusCode = response.StatusCode 

     'Close the response 
     response.Close() 
     response = Nothing 

     If totalBytesRead = fileLength AndAlso _ 
      code = HttpStatusCode.Created Then 

      MessageBox.Show("The file has uploaded successfully!", "Upload Complete", _ 
       MessageBoxButtons.OK, MessageBoxIcon.Information) 

     Else 

      MessageBox.Show("The file did not upload successfully.", _ 
       "Upload Failed", MessageBoxButtons.OK, MessageBoxIcon.Warning) 

     End If 


    End Sub 

ответ

0

HTTP Post Files Настоящая статья посвящена основам.

+0

Это должно быть встроено в приложение. Я знаю, что сервер и клиент filezilla являются бесплатными, но это не решение моей проблемы. –

+0

Обновленный ответ. – OneFineDay

+0

Я уже использую FTPWebRequest для загрузки. Я не хочу загружать FTP. Мне нужно сделать это, используя HttpWebrequest. –

Смежные вопросы