PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : FTP Upload inkl Unterordnern


tsaG
2009-04-29, 01:59:56
Hi,

Ich möchte mit einem Programm die Dateien aus meinem Eigene Dateien Ordner auf einen FTP Laden.

Dim data As String = My.Computer.FileSystem.SpecialDirectories.MyDocuments


For Each foundFile As String In My.Computer.FileSystem.GetFiles(My.Computer.FileSystem.SpecialDirectories.MyDocu ments, FileIO.SearchOption.SearchAllSubDirectories)
ListBox1.Items.Add(foundFile)
Next


Dim strTest As String
Dim arr As Object


For b = 1 To ListBox1.Items.Count

strTest = ListBox1.Items.Item(b)
arr = Split(strTest, ".")

For i = 0 To UBound(arr)
If odd(i) = False Then
TextBox2.Text = TextBox2.Text & arr(i) & vbNewLine

'übertragen

' lokales Verzeichnis, in dem sich die Datei befindet,
' die hochgeladen werden soll
Dim sLocalPath As String = ListBox1.Items(i).ToString
Dim sLocalFile As String = ""

' FTP-Server
Dim sFTPHost As String = "ftp://server.de/"

' Benutzername und Kennwort für den Server-Zugriff
Dim sUserName As String = "acc"
Dim sPassword As String = "pw"

' Datei wie UploadFile-Methode hochladen
My.Computer.Network.UploadFile(sLocalPath, sFTPHost & i & "." & arr(i), sUserName, sPassword, False, 500, FileIO.UICancelOption.DoNothing)
'My.Computer.Network.UploadFile(sLocalPath, sFTPHost, sUserName, sPassword)


End If
Next i
Next b


End Sub
Function odd(ByVal x As Long) As Boolean
If x Mod 2 = 0 Then
odd = True
Else
odd = False
End If
End Function


So, mit dieser Technik schneide ich von jedem Dateinamen hinter dem Punkt die Dateiendung ab und lade diese dann auf den FTP Ordner hoch. Diese liegen dann im Format 1.exe 2.jpg 3.jpg etc.. auf dem Server. Das ist natürlich nicht so gut da es schon schön wäre den Dateinamen inkl Unterordner auf dem Server zu haben, quasi 1 zu 1

Nun habe ich mir gedacht: Du kannst ja auch einfach kompletten Pfad welcher in der liste mit diesem Teil hier gefüllt wird:
For Each foundFile As String In My.Computer.FileSystem.GetFiles(My.Computer.FileSystem.SpecialDirectories.MyDocu ments, FileIO.SearchOption.SearchAllSubDirectories)
ListBox1.Items.Add(foundFile)

nehmen und dann den Dateinamen inkl Pfad "heraustrennen" indem ich den bekannten Pfad zu den eigenen Dateien replace. Name = Replace(ListBox1.Items.Item(b), My.Computer.FileSystem.SpecialDirectories.MyDocuments, "")

So erhalte ich dann bspw folgendes Format:
test123.text blumen.jpg aber auch urlaub/kanaren.jpg, also inklusive unterordner. Das wäre natürlich eine Top Sache, wäre da nicht ein Haken....
Ich bekomme immer eine Fehlermeldung wenn ich Unterordner uploaden will weil My.Computer.Network.UploadFile nicht automatisch Ordner erstellt :(

Nun, wie kann ich (automatisch) einen Unterordner erstellen? Ich habe das "Programm" gerade hier in der NAcht geschrieben, also alles Quick and dirty, bitte nicht meckern xD

EDIT: My.Computer.Network.Downloadfile erstellt automatisch Ordner, aber leider Uploadfile nicht :(

RattuS
2009-04-29, 08:52:54
Erstell dir lieber für jeden String, den du aus .GetFiles bekommst ein FileInfo-Objekt. Das FileInfo-Objekt beinhaltet Attribute wie z.B. das Verzeichnis oder den Dateiname (keine Stringoperationen notwendig) bereits. Für den Upload würde ich erst alle entsprechenden Verzeichnisse über .GetDirectories auf dem FTP-Server anlegen und dann erst die Dateien hochladen.

tsaG
2009-04-29, 11:12:08
Ah, danke für den Tipp. Bin ich noch garnicht drauf gekommen :)

Womit kann ich denn auf dem FTP die Ordner erstellen?