Vb.net FTP客户端只上载0 KB的文件
我的FTP客户端有一个小问题。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)
选择一个文件有效,使用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()
。