Vb.net 尝试通过FTP上载文件时出现空引用异常
我制作了一个FTP上传应用程序,它将FileDialog中选择的文件名更改为4个组合框中的一组变量。但每当我试图上传文件时,它都会说:Vb.net 尝试通过FTP上载文件时出现空引用异常,vb.net,ftp,nullreferenceexception,Vb.net,Ftp,Nullreferenceexception,我制作了一个FTP上传应用程序,它将FileDialog中选择的文件名更改为4个组合框中的一组变量。但每当我试图上传文件时,它都会说: Path不能为空参数名称:Path 在即时窗口中显示: mscorlib.dll中发生了类型为“System.ArgumentNullException”的首次意外异常 Microsoft.VisualBasic.dll中发生了类型为“System.NullReferenceException”的首次意外异常 这是: 我已经看过多次代码,但我不明白是什么错了,
Path不能为空参数名称:Path
在即时窗口中显示:
mscorlib.dll中发生了类型为“System.ArgumentNullException”的首次意外异常
Microsoft.VisualBasic.dll中发生了类型为“System.NullReferenceException”的首次意外异常
这是:
我已经看过多次代码,但我不明白是什么错了,因为我是VB新手
这是我使用的代码:
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) + ".pdf"
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"), 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()
System.IO.File.ReadAllBytes(Filename)
Catch ex As Exception
MessageBox.Show(ex.Message)
MessageBox.Show("Stack Trace: " & vbCrLf & ex.StackTrace)
End Try
FileSystem.Rename(originalFile, Filename)
Dim strz As System.IO.Stream = request.GetRequestStream()
strz.Write(file, 0, file.Length)
strz.Close()
strz.Dispose()
FileSystem.Rename(Filename, originalFile)
End Sub
提前感谢一个
参数NullException
不是一个NullReferenceException
。它告诉你其中一个函数的参数是Nothing
部分原因在于这两条线:
Filename = OpenDialog()
System.IO.File.ReadAllBytes(Filename)
在本例中,您的
文件名
似乎是无
,因为OpenDialog
不返回值。您需要返回从OpenFileDialog
中选择的文件ArgumentNullException
不是NullReferenceException
。它告诉你其中一个函数的参数是Nothing
部分原因在于这两条线:
Filename = OpenDialog()
System.IO.File.ReadAllBytes(Filename)
在本例中,您的
文件名
似乎是无
,因为OpenDialog
不返回值。您需要返回从OpenFileDialog
中选择的文件ArgumentNullException
不是NullReferenceException
。它告诉你其中一个函数的参数是Nothing
部分原因在于这两条线:
Filename = OpenDialog()
System.IO.File.ReadAllBytes(Filename)
在本例中,您的
文件名
似乎是无
,因为OpenDialog
不返回值。您需要返回从OpenFileDialog
中选择的文件ArgumentNullException
不是NullReferenceException
。它告诉你其中一个函数的参数是Nothing
部分原因在于这两条线:
Filename = OpenDialog()
System.IO.File.ReadAllBytes(Filename)
在本例中,您的
文件名
似乎是无
,因为OpenDialog
不返回值。您需要返回从OpenFileDialog
System.IO.file.ReadAllBytes(文件名)
:Filename
为null
System.IO.file.ReadAllBytes(文件名):Filename
为null
System.IO.file.ReadAllBytes(文件名)
:Filename
是null
System.IO.File.ReadAllBytes(Filename)
:Filename
是null
。好了,我知道我做错了什么,但我不完全明白如何修复这个问题。将return语句添加到OpenFileDialog(),但在何处?可能在该if语句中:if FD.ShowDialog()=DialogResult.OK然后
。如果Filename=OpenDialog()
之后的任何代码依赖于已选择的文件,则应使用包装,如果(不是文件名什么都不是),则OK,我知道我做错了什么,但我不完全理解如何修复此问题。将return语句添加到OpenFileDialog(),但在何处?可能在该if语句中:if FD.ShowDialog()=DialogResult.OK然后
。如果Filename=OpenDialog()
之后的任何代码依赖于已选择的文件,则应使用包装,如果(不是文件名什么都不是),则OK,我知道我做错了什么,但我不完全理解如何修复此问题。将return语句添加到OpenFileDialog(),但在何处?可能在该if语句中:if FD.ShowDialog()=DialogResult.OK然后
。如果Filename=OpenDialog()
之后的任何代码依赖于已选择的文件,则应使用包装,如果(不是文件名什么都不是),则OK,我知道我做错了什么,但我不完全理解如何修复此问题。将return语句添加到OpenFileDialog(),但在何处?可能在该if语句中:if FD.ShowDialog()=DialogResult.OK然后
。如果Filename=OpenDialog()
之后的任何代码依赖于已选择的文件,则应使用包装,如果(不是Filename就是Nothing),则