FTP & VB6

hondocrx

Erfahrenes Mitglied
Hi!

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

Das mach ich mit

Code:
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
 
Hi hondocrx

also wenn Du den Befehl
Code:
Inet1.Execute , "PUT d:\a.jpg a.jpg"
so absetzt, wird nur die Datei a.jpg übertragen.

änderst Du den Code in
Code:
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
 
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
 
Wäre nett wenn du uns an deinem Erfolg teilhaben lässt ;-)
Wie hast du es denn hinbekommen ?
 
klar lass ich euch daran teilhaben :)

Code:
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!
 
öh jo ich hab jetz auch sowas geschrieben aber bei mir übträgt der nix :( ich zeig euch mal den code
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 ...
 
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
 
har danke für den Tip, der war entscheident ... es geht noch viel einfacher ... aufgepasst:
Code:
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 ;-)
 
Ja stimmt, so gehts auch ;-) Aber wenn du eben die ganze Zeit in einem Ordner arbeiten musst, dann kannst du so das Verzeichnis wechseln:

Code:
	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
 
Zurück