У меня небольшая проблема с моим FTP-клиентом.
Выбор файла работает, переименование этого файла с 4 переменными работает.
Это загрузка, которая вызывает у меня проблемы. Всякий раз, когда файл загружается на FTP-сервер, он говорит, что он равен 0 КБ.FTP-клиент загружает только 0KB-файлы
Я имею в виду 2 возможных проблем:
Visual Studio говорит мне, что переменная file
используется до того, как было присвоено значение, чтобы убедиться, что он не пустой я сделал следующее.
Dim file As Byte()
If (Not file Is Nothing) Then
strz.Write(file, 0, file.Length)
strz.Close()
strz.Dispose()
FileSystem.Rename(Filename, originalFile)
End If
Это берет на себя заботу о любых возможных ошибках.
Второй - это fName, то же предупреждение, что и файл, и я позаботился об этом таким же образом.
другая возможность, что мой код просто берет 4 переменные и делает это в файл и загружает его, следовательно, размер 0KB ....
Вот мой код:
Dim Filename As String
Dim originalFile As String
Private Function enumerateCheckboxes(ByVal path As String)
originalFile = path
Dim fName As String
For Each Control In Me.Controls
If (TypeOf Control Is ComboBox AndAlso DirectCast(Control, ComboBox).SelectedIndex > -1) Then
fName += CStr(Control.SelectedItem.Key) + "_"
End If
Next
Try
fName = path + fName.Substring(0, fName.Length - 1) + ".jpg"
Catch ex As Exception
MsgBox(ex.Message)
MsgBox("Stack Trace: " & vbCrLf & ex.StackTrace)
End Try
Return fName
End Function
Public Function OpenDialog()
Dim FD As OpenFileDialog = New OpenFileDialog()
FD.Title = "Selecteer een bestand"
FD.InitialDirectory = "C:\"
FD.Filter = "All files (*.*)|*.*|All files (*.*)|*.*"
FD.FilterIndex = 2
FD.RestoreDirectory = True
If FD.ShowDialog() = DialogResult.OK Then
Dim Filename As String = FD.FileName
Filename = StrReverse(Filename)
Filename = Mid(Filename, InStr(Filename, "\"), Len(Filename))
Filename = StrReverse(Filename)
MsgBox(enumerateCheckboxes(Filename))
End If
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim request As System.Net.FtpWebRequest = DirectCast(System.Net.WebRequest.Create("ip" & enumerateCheckboxes(Filename)), System.Net.FtpWebRequest)
request.Credentials = New System.Net.NetworkCredential("username", "password")
request.Method = System.Net.WebRequestMethods.Ftp.UploadFile
Dim file() As Byte
Try
Filename = OpenDialog()
If (Not Filename Is Nothing) Then
System.IO.File.ReadAllBytes(Filename)
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
MessageBox.Show("Stack Trace: " & vbCrLf & ex.StackTrace)
End Try
If (Not Filename Is Nothing) Then
FileSystem.Rename(originalFile, Filename)
End If
Dim strz As System.IO.Stream = request.GetRequestStream()
If (Not file Is Nothing) Then
strz.Write(file, 0, file.Length)
strz.Close()
strz.Dispose()
FileSystem.Rename(Filename, originalFile)
End If
End Sub
End Class
У меня есть посмотрел на несколько потоков с той же проблемой, что и я.
Темы как this Но я не верю, что это относится к моей проблеме. Если бы вы были так добры, чтобы объяснить, что я сделал не так, и как я могу исправить и избежать этого в будущем, моя отладка все еще немного грубо ...
Спасибо заранее!
Оке, я вижу, где я пошел не так, но .. Файлы, которые загружаются на мой сервер все еще 0Kb – MalumAtire832
Я думаю, вам также нужно вызвать 'request.GetResponse()' перед удалением потока. – pmcoltrane