在拖放时检索 FTP 文件的完整路径?

Retrieve full path of FTP file on drag & drop?

从 Windows 资源管理器浏览的 Ftp 文件夹中拖动文件时,我可以使用下一个代码读取文件名。 但是有没有办法检索完整的 Ftp 路径?

    Private Sub DataGridView1_DragDrop(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles DataGridView1.DragDrop
    Dim filename As String = ""
    If e.Data.GetDataPresent("UniformResourceLocator") Then
        Dim ioStream As System.IO.Stream = DirectCast(e.Data.GetData("FileGroupDescriptor"), System.IO.Stream)
        Dim contents As Byte() = New [Byte](511) {}
        ioStream.Read(contents, 0, 512)
        ioStream.Close()
        Dim sb As New System.Text.StringBuilder()
        Dim i As Integer = 76
        While contents(i) <> 0
            sb.Append(CChar(ChrW(contents(i))))
            i += 1
        End While

        filename = sb.ToString()
    End If

End Sub

如果丢弃的数据包含 UniformResourceLocator 格式,您可以从中获取整个 URL,例如:

   Private Sub Form1_DragDrop(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop

      If e.Data.GetDataPresent("UniformResourceLocator") Then
         Dim URL As String = New IO.StreamReader(CType(e.Data.GetData("UniformResourceLocator"), IO.MemoryStream)).ReadToEnd
      End If

   End Sub

它首先检查是否存在 UniformResourceLocator 格式,如果存在,则从 e(drag/drop 参数)获取数据,将其转换为 MemoryStream,并将其传递给新的 StreamReader(对于易于阅读),然后执行 .ReadToEnd() 以获取整个字符串。