Vb.net FTP客户端只上载0 KB的文件

Vb.net FTP客户端只上载0 KB的文件,vb.net,file-upload,ftp,Vb.net,File Upload,Ftp,我的FTP客户端有一个小问题。 选择一个文件有效,使用4个变量重命名该文件有效。 是上传给我带来了麻烦。 每当一个文件被上传到FTP服务器时,它就会显示为0KB 我想到了两个可能的问题: VisualStudio告诉我,变量file在赋值之前就被使用了,为了确保它不为null,我执行了以下操作 Dim file As Byte() If (Not file Is Nothing) Then strz.Write(file, 0, file.Length)

我的FTP客户端有一个小问题。
选择一个文件有效,使用4个变量重命名该文件有效。
是上传给我带来了麻烦。 每当一个文件被上传到FTP服务器时,它就会显示为0KB

我想到了两个可能的问题:

VisualStudio告诉我,变量
file
在赋值之前就被使用了,为了确保它不为null,我执行了以下操作

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,和file的警告相同,我用同样的方法处理它

另一种可能是,我的代码只是将这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
我已经查看了多个与我有相同问题的线程。
线状 但我不相信这适用于我的问题。 如果你能很好地解释我做错了什么,以及我将来如何修复和避免这个问题,我的调试仍然有点粗糙


提前谢谢你

Visual Studio向您发出此警告,因为您从未将任何内容分配给
文件
数组。我认为,在你有:

System.IO.File.ReadAllBytes(Filename)
你真的想要:

file = System.IO.File.ReadAllBytes(Filename)

好吧,我知道我错在哪里了,但是。。正在上载到我的服务器上的文件仍然存在,我认为在处理流之前,您还需要调用
request.GetResponse()