NET: Unterstützung bei FTP Programm Invoke + Deligate
Hallo werte Admins,
leider bin ich beauftragt worden, ein weiteres FTP Tool mit GUI zu basteln.
Da ich meine Codes nur laienhaft (Copy&Paste) zusammen bastel bräuchte ich mal wieder Hilfe von fähigen Codern.
Habe auf 'ner Seite ein Script gefunden (Klick) welches meinen Anforderungen halbwegs gerecht wird.
Aktuell habe ich 2 Probleme:
Falls wer Lust hat, das Script ein wenig zu helfen und ggf. zu pimpen wäre ich dankbar! (Insofern Interessant, verlinke ich euch im fertigen Tool).
Anbei der aktuelle Code:
Falls Ihr noch Infos braucht, einfach anfragen.
Ich danke Euch!
Grüße
PixL
leider bin ich beauftragt worden, ein weiteres FTP Tool mit GUI zu basteln.
Da ich meine Codes nur laienhaft (Copy&Paste) zusammen bastel bräuchte ich mal wieder Hilfe von fähigen Codern.
Habe auf 'ner Seite ein Script gefunden (Klick) welches meinen Anforderungen halbwegs gerecht wird.
Aktuell habe ich 2 Probleme:
- Gerne würde ich nicht nur Dateien sondern Ordner und Unterordner auswählen und auflisten und anschließend uploaden lassen. (Derzeit nur MultipleFiles)
- Benötige ich wohl Hilfe bzgl Delegate und Invoke (Soweit eingelesen aber für die Umsetzung fehlt es an Erfahrung).
Falls wer Lust hat, das Script ein wenig zu helfen und ggf. zu pimpen wäre ich dankbar! (Insofern Interessant, verlinke ich euch im fertigen Tool).
Anbei der aktuelle Code:
Imports System.IO
Imports System.Net
Public Class Form1
Private Sub MainForm_Load(ByVal sender As Object, ByVal e As EventArgs)
Control.CheckForIllegalCrossThreadCalls = False
End Sub
Private Sub btnAddFile_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAddFile.Click
Dim OpenFile As New OpenFileDialog() With {.Multiselect = True}
If OpenFile.ShowDialog() = Windows.Forms.DialogResult.OK Then
If OpenFile.FileNames.Count = 1 Then
Dim newItm As New ListViewItem(Path.GetFileName(OpenFile.FileName))
newItm.SubItems.Add(txtFTPServer.Text & "/" & Path.GetFileName(OpenFile.FileName))
newItm.SubItems.Add("")
newItm.SubItems.Add(OpenFile.FileName)
lstCollection.Items.Add(newItm)
ElseIf OpenFile.FileNames.Count > 1 Then
For Each Str As String In OpenFile.FileNames
If My.Computer.FileSystem.FileExists(Str) Then
Dim newItm As New ListViewItem(Path.GetFileName(Str))
newItm.SubItems.Add(txtFTPServer.Text & "/" & Path.GetFileName(Str))
newItm.SubItems.Add("")
newItm.SubItems.Add(Str)
lstCollection.Items.Add(newItm)
End If
Next
End If
lblCount.Text = "0 /" & lstCollection.Items.Count
End If
End Sub
Public Sub btnAction_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAction.Click
bWorker.RunWorkerAsync()
End Sub
Private Sub bWorker_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bWorker.DoWork
For Each itm As ListViewItem In lstCollection.Items
Try
Dim request As FtpWebRequest = DirectCast(WebRequest.Create(New Uri(itm.SubItems.Item(1).Text)), FtpWebRequest)
request.Method = WebRequestMethods.Ftp.UploadFile
request.Credentials = New NetworkCredential(txtFTPUsername.Text, txtFTPPassword.Text)
request.UseBinary = True
request.UsePassive = False
Dim buffer(1023) As Byte
Dim bytesIn As Long = 1
Dim totalBytesIn As Long = 0
Dim filepath As System.IO.FileInfo = New System.IO.FileInfo(itm.SubItems.Item(3).Text)
Dim ftpstream As System.IO.FileStream = filepath.OpenRead()
Dim flLength As Long = ftpstream.Length
Dim reqfile As System.IO.Stream = request.GetRequestStream
Do Until bytesIn < 1
bytesIn = ftpstream.Read(buffer, 0, 1024)
If bytesIn > 0 Then
reqfile.Write(buffer, 0, bytesIn)
totalBytesIn += bytesIn
If flLength > 0 Then
Dim perc As Integer = (totalBytesIn / flLength) * 100
bWorker.ReportProgress(perc, CInt(itm.Index + 1))
End If
End If
Loop
reqfile.Close()
ftpstream.Close()
itm.SubItems.Item(2).Text = "File Succesfully uploaded!"
Catch ex As Exception
itm.SubItems.Item(2).Text = "File was not uploaded!"
End Try
Next
End Sub
Private Sub bWorker_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles bWorker.ProgressChanged
pBar.Value = e.ProgressPercentage
lblPercent.Text = e.ProgressPercentage & " %"
lblCount.Text = CInt(e.UserState) & " / " & lstCollection.Items.Count
End Sub
Private Sub bWorker_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bWorker.RunWorkerCompleted
MsgBox("Finish!")
End Sub
Private Sub btnAction_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAction.Click
End Sub
Private Sub OpenFileDialog_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs)
End Sub
End Class
Falls Ihr noch Infos braucht, einfach anfragen.
Ich danke Euch!
Grüße
PixL
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 347080
Url: https://administrator.de/contentid/347080
Ausgedruckt am: 24.11.2024 um 03:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo!
Wie willst du etwas coden wenn du nicht einmal den Befehlssatz der jeweiligen Programmiersprache kennst?
Wie der Name schon sagt Openfiledialog -> Öffne Dateiauswahl.
Für Ordner/Verzeichnisse nimmt du FolderBrowserDialog -> Öffne Ordnerauswahl.
Schau dir mal die Funktion My.Computer.FileSystem.GetFiles an und schau dir den Namespace System.IO.File an.
Gruß
Eisbein
Wie willst du etwas coden wenn du nicht einmal den Befehlssatz der jeweiligen Programmiersprache kennst?
Wie der Name schon sagt Openfiledialog -> Öffne Dateiauswahl.
Für Ordner/Verzeichnisse nimmt du FolderBrowserDialog -> Öffne Ordnerauswahl.
Schau dir mal die Funktion My.Computer.FileSystem.GetFiles an und schau dir den Namespace System.IO.File an.
Gruß
Eisbein
Hallo!
Das wird sich mit FolderBrowserDialog und Openfiledialog nicht so einfach umsetzen lassen, wenn du Dateien und Verzeichnisse auswählbar machen willst.
Hierfür musst du dir selbst etwas basteln oder du machst 2 Buttons (Datei auswählen und Verzeichnis auswählen).
Gruß
eisbein
Gerne würde ich nicht nur Dateien sondern Ordner und Unterordner auswählen und auflisten und anschließend uploaden lassen.
Das wird sich mit FolderBrowserDialog und Openfiledialog nicht so einfach umsetzen lassen, wenn du Dateien und Verzeichnisse auswählbar machen willst.
Hierfür musst du dir selbst etwas basteln oder du machst 2 Buttons (Datei auswählen und Verzeichnis auswählen).
Gruß
eisbein
Hallo!
Schau dir mal dieses Beispiel an:
https://www.codeproject.com/Articles/8546/An-All-VB-NET-Explorer-Tree-Co ...
Gruß
eisbein
Schau dir mal dieses Beispiel an:
https://www.codeproject.com/Articles/8546/An-All-VB-NET-Explorer-Tree-Co ...
Gruß
eisbein