thongkorn โพสต์ 2023-11-14 11:20:32

[VB.NET] ลิสต์รายชื่อไฟล์ผ่าน FTP Server ด้วย WinSCP

โค้ดชุดนี้จะเป็นการแสดงผลรายชื่อไฟล์ภาพจาก FTP Server ผ่านอินเทอร์เน็ตด้วยของฟรี WinSCP Net Library มาแสดงผลลงบน ListView Control ก่อน จากนั้นก็ค่อยเลือกไฟล์ภาพมาแสดงผลใน PictureBox Control อีกที โดยแอดมินจะใช้ตัวอย่างจาก Free Hosting ของ www.serv00.com เข้าไปสมัครใช้งานได้ฟรีเลยครับผม ...

http://www.g2gsoft.com/webboard/images/VBNet/listingfileftp.png


http://www.g2gsoft.com/webboard/images/VBNet/ftpwinscpref.png


มาดูโค้ดต้นฉบับเต็มกันเถอะ ...
Imports System.IO
Imports System.Net
Imports WinSCP

Public Class frmListFileHosting
    ' / --------------------------------------------------------------------------------
    '// สำหรับ HOSTING
    '// ตำแหน่งของไฟล์ภาพบน Hosting เพื่อนำมาแสดงผล
    '// แก้ไข SUB DOMAIN และชื่อ DIRECTORY ที่ต้องการแสดงผลไฟล์ภาพ
    Dim MyURL As String = "https://SUBDOMAIN.serv00.net/DIRECTORY/"
    'Dim RemoteDir As String = "domains/SUBDOMAIN.serv00.net/public_html/DIRECTORY/"
    '// Login เข้าสู่ระบบ Hosting ...
    '// FTP Hostname ต้องดูจากตอนที่ Add Account for FTP เพราะอาจจะไม่เหมือนกับตัวอย่าง
    Dim HostName As String = "s0.serv00.com"
    Dim UName As String = "USERNAME"
    Dim Pwd As String = "PASSWORD"

    Private Sub frmListFileHosting_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
      txtRemoteDir.Text = "domains/SUBDOMAIN.serv00.net/public_html/DIRECTORY/"
      Label1.Text = "Filename: "
    End Sub

    ' / --------------------------------------------------------------------------------
    ' / แสดงรายชื่อไฟล์จาก Remote Directory
    ' / --------------------------------------------------------------------------------
    Private Sub btnListingClick(sender As System.Object, e As System.EventArgs) Handles btnListing.Click
      '// Initialize ListView.
      With ListView1
            .Clear()
            .View = View.Details
            .GridLines = True
            .FullRowSelect = True
            .HideSelection = False
            .MultiSelect = False
            '// Add Columns.
            .Columns.Add("Filename", Me.ListView1.Width \ 3 - 50)
            .Columns.Add("Length (KB)", Me.ListView1.Width \ 3)
            .Columns.Add("Last Modification", Me.ListView1.Width \ 3 + 20)
      End With
      '//
      Me.Cursor = Cursors.WaitCursor
      Try
            '/ Setup session options
            Dim sessionOptions As New SessionOptions
            With sessionOptions
                .Protocol = Protocol.Ftp
                .HostName = HostName
                .UserName = UName
                .Password = Pwd
                '/ FTP ไม่ต้องใช้
                '.SshHostKeyFingerprint = "ssh-rsa 2048 XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX"
            End With
            '//
            Using Session As New Session
                '/ Connect with options.
                Session.Open(sessionOptions)
                '// กำหนด Remote Directory
                Dim RemoteDirectory As RemoteDirectoryInfo = Session.ListDirectory(txtRemoteDir.Text)
                Dim FileInfo As RemoteFileInfo
                For Each FileInfo In RemoteDirectory.Files
                  Dim LV As New ListViewItem
                  If Not FileInfo.IsDirectory Or Not FileInfo.IsParentDirectory Then
                        LV = ListView1.Items.Add(FileInfo.Name)'// --> Primary Node
                        LV.SubItems.Add(Format(FileInfo.Length / 1024, "#,##0.00"))
                        LV.SubItems.Add(FileInfo.LastWriteTime)
                  End If
                Next
            End Using
      Catch ex As Exception
            MessageBox.Show(ex.Message)
      End Try
      Me.Cursor = Cursors.Default
      '// ปรับความกว้างของ Column ในการแสดงผลบน ListView
      'ListView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize)
    End Sub

    ' / --------------------------------------------------------------------------------
    ' / นำรายชื่อภาพจาก ListView Control มาแสดงผลใน PictureBox
    ' / --------------------------------------------------------------------------------
    Private Sub ListView1_DoubleClick(sender As Object, e As System.EventArgs) Handles ListView1.DoubleClick
      Try
            '//
            Me.Cursor = Cursors.WaitCursor
            '// รับค่าชื่อไฟล์จาก ListView1.SelectedItems(0).Text เพื่อนำมาแสดงผลบน PictureBox (picURL)
            Dim Req As WebRequest = WebRequest.Create(MyURL & ListView1.SelectedItems(0).Text)
            Dim Res As WebResponse = Req.GetResponse()
            Dim imgStream As Stream = Res.GetResponseStream()
            Dim imgPic As Image = Image.FromStream(imgStream)
            imgStream.Close()
            '/ Load File Stream into PictureBox.
            With picURL
                picURL.Image = imgPic
                .WaitOnLoad = True
                .SizeMode = PictureBoxSizeMode.StretchImage
            End With
      Catch ex As Exception
            MessageBox.Show(ex.Message)
      End Try
      Me.Cursor = Cursors.Default
      Label1.Text = "Filename: " & ListView1.SelectedItems(0).Text
    End Sub

    Private Sub frmListFileHosting_Resize(sender As Object, e As System.EventArgs) Handles Me.Resize
      If ListView1.Columns.Count = 0 Then Return
      With ListView1
            .Columns("Filename").Width = Me.ListView1.Width \ 3 - 50
            .Columns("Length").Width = Me.ListView1.Width \ 3
            .Columns.Add("Last Modification").Width = Me.ListView1.Width \ 3 + 20
      End With
    End Sub

    Private Sub btnExit_Click(sender As Object, e As System.EventArgs) Handles btnExit.Click
      Me.Close()
    End Sub

    Private Sub frmListFileHosting_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
      Me.Dispose()
      GC.SuppressFinalize(Me)
      Application.Exit()
    End Sub
End Class

ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) ได้จากที่นี่ ...
หน้า: [1]
ดูในรูปแบบกติ: [VB.NET] ลิสต์รายชื่อไฟล์ผ่าน FTP Server ด้วย WinSCP