В настоящее время я загружаю все на свой веб-сервер с помощью 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
Это должно быть встроено в приложение. Я знаю, что сервер и клиент filezilla являются бесплатными, но это не решение моей проблемы. –
Обновленный ответ. – OneFineDay
Я уже использую FTPWebRequest для загрузки. Я не хочу загружать FTP. Мне нужно сделать это, используя HttpWebrequest. –