# FTP & VB6



## hondocrx (25. April 2005)

Hi!

Ich möchte mehrere Daten auf einen Server per FTP hochladen.

Das mach ich mit 


```
With Inet1
    .Cancel
    .Protocol = icFTP
    .URL = "ftp://url"
    .UserName = "NAME"
    .Password = "PASSWORT"
End With
Inet1.Execute , "PUT d:\a.jpg a.jpg"
Inet1.Execute , "QUIT"
```

Was muss ich ändern um mehrere Dateien (b.jpg/c.jpg/ usw) auf einmal hochladen  zu können?

Ich dachte das 

Inet1.Execute , "PUT d:\b.jpg B.jpg"
Inet1.Execute , "PUT d:\a.jpg A.jpg"

geht. Dabei wird aber nur B.jpg hochgeladen.


MfG hondocrx


----------



## Orakel (25. April 2005)

Hi hondocrx

also wenn Du den Befehl

```
Inet1.Execute , "PUT d:\a.jpg a.jpg"
```
so absetzt, wird nur die Datei a.jpg übertragen.

änderst Du den Code in

```
Inet1.Execute , "PUT d:\a.jpg b.jpg"
```
(Ich gehe mal davon aus so hast Du es gemeint) dann wird die Datei a.jpg auf den FTP-Server unter dem Namen b.jpg gespeichert. Ist also wie ein Copy Befehl.

Im Prinzip glaube ich, dass Du folgendermassen vorgehen must:
1) Eine Datei senden
2) Warten bis das Control mit der Übertragung fertig ist
3) Die nächste Aktion einleiten.

Nimmt man den normalen CMD FTP-Client, dann kennt der auf jeden Fall noch den Befehl "mput". Mit "mput *.jpg" werden dann alle JPG-Dateien transferiert. Ich kann leider nicht testen, ob das Inet den mput implementiert hat. Aber da das ja auch über die Execute Methode geht, kannste es ja mal probieren.

Gruß
Das Orakel


----------



## MOD4ever (17. Mai 2005)

Hi,

ich hab das jetzt mal genauso wie du gemacht, nur noch mit ner Schleife, dass alle Dateien in einem Ordner hochgeladen werden, aber sobald eine Datei hochgeladen wurde kommt die Meldung:

 "Run-time error '35764':
Still executing last request

Was mach ich denn noch falsch?

MfG MOD4ever


----------



## MOD4ever (17. Mai 2005)

Habs endlich hinbekommen! JUHU!


----------



## MatMagic (17. Mai 2005)

Wäre nett wenn du uns an deinem Erfolg teilhaben lässt ;-)
Wie hast du es denn hinbekommen ?


----------



## MOD4ever (17. Mai 2005)

klar lass ich euch daran teilhaben  


```
Public Function gFileTitle(ByVal sFileName As String) As String
  Dim nPos As Long
  nPos = InStrRev(sFileName, "\")
  If nPos <> 0 Then
	gFileTitle = Mid$(sFileName, nPos + 1)
  Else
	gFileTitle = sFileName
  End If
End Function
 
With Inet1
	.Cancel
	.Protocol = icFTP
	.URL = ftp://ftp.deinanbieter.de
	.UserName = "benutzername"
	.Password = "passwort"
End With
Verzeichnis = "C:\MeineDateien"
Set fso = CreateObject("Scripting.FileSystemObject")
Set fld = fso.GetFolder(Verzeichnis)
Set dateien = fld.Files
Dim strFileName As String
Dim strRetVal As String
For Each datei In dateien
strFileName = datei
strRetVal = gFileTitle(strFileName)
status.AddItem Time & " -- Datei: " & strRetVal
Inet1.Execute , "PUT " & """" & datei & """" & " " & """" & strRetVal & """"
Do While Inet1.StillExecuting
DoEvents
Loop
Next
status.AddItem "-------------------------------------------------"
status.AddItem "Alle Dateien wurden hochgeladen!"
status.AddItem "-------------------------------------------------"
Inet1.Execute , "QUIT"
```
 
So einfach geht das   Ich hab übelst den umweg gemacht!


----------



## popelmaster (19. Mai 2005)

öh jo ich hab jetz auch sowas geschrieben aber bei mir übträgt der nix    ich zeig euch mal den code

```
With Inet1
        .Cancel
        .Protocol = icFTP
        .URL = "ftp://FTPSERVER/html/final/quiz/"
        .Username = "XXXXX"
        .Password = "XXXXX"
        End With
        MsgBox Inet1.ResponseInfo
        Inet1.Execute , "PUT C:\Text.txt Text.txt"
        Do While Inet1.StillExecuting
        DoEvents
        Loop
        Inet1.Execute , "QUIT"
```

aber die Textdatei schickt er nicht weg ... hat jemand ne idee? woran das liegen kann? kommt kein fehler und nix bloss die textdatei kommt nich an...  büdde helft mir ...


----------



## MOD4ever (19. Mai 2005)

Hi,

ich glaub das liegt an deinem FTP-pfad. Du darfst bei Inet1.URL nur den FTP-server angeben und nicht den Pfad in den er noch wechseln soll. Ich weiß aber nicht genau wie man den Pfad wwechselt. Also normalerweise mit "CD deinpfad", aber ich bin mir wirklich nicht sicher wie genau man das machen muss. Vielleicht kann uns ja jemand weiterhelfen. Ich bräuchte das nämlich auch.

MfG MOD4ever


----------



## popelmaster (19. Mai 2005)

har danke für den Tip, der war entscheident ... es geht noch viel einfacher ... aufgepasst:

```
With Inet1
        .Cancel
        .Protocol = icFTP
        .URL = "ftp://FTPSERVER" <-- hier darf nich der absolute pfad stehen 
        .Username = "NAME"
        .Password = "PASSWORD"
        
        End With
        Inet1.Execute , "PUT C:\Text.txt /html/final/quiz/Text.txt" <--- aber hier 
        Do While Inet1.StillExecuting
        DoEvents
        Loop
        Inet1.Execute , "QUIT"
```

danke danke danke ;-)


----------



## MOD4ever (24. Mai 2005)

Ja stimmt, so gehts auch ;-) Aber wenn du eben die ganze Zeit in einem Ordner arbeiten musst, dann kannst du so das Verzeichnis wechseln:


```
Inet1.Execute Inet1.URL, "CD " & Chr(34) & "html" & Chr(34)
	Do While Inet1.StillExecuting
	DoEvents
	Loop
```
 
Und dann wird in das Verzeichnis "html" gewechselt.

MfG MOD4ever


----------



## 26toto26 (6. Januar 2008)

*Aw: Ftp & Vb6*

Hallo an alle,

ich habe den Code übernommen und es geht super gut.
Jetzt habe ich den Pfad zu den einzelnen Dateien in einer Variable. Wie muß ich die Zeile ändern das der Pfad von der Variable benutzt wird?


```
Inet1.Execute , "PUT C:\Text.txt /html/final/quiz/Text.txt"
```

Danke und Gruß
Torsten


----------

