• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

jpg file Uploaden naar ftp website via vb excel

Status
Niet open voor verdere reacties.

kobustimmer

Gebruiker
Lid geworden
16 dec 2013
Berichten
9
Hallo
Wie kan mij helpen.

ik probeer een file te uploaden naar mijn website.
ben nu twee weken aan het zoeken heb wel het een en ander gevonden.
waar onder het volgende script maar loop vast bij het uitvoeren.

na commando 150 gebeurt er niets meer.
dit krijg ik te zien bij het uitvoeren :

ftp> !REM upload .jpg file
ftp> open ftp.xxxxxxxx.nl 21
verbonden met ftp.xxxxxxxx.nl.
220 Microsoft FTP Service
ftp> user xxxxxxxx xxxxxxx
331 pasword required
230 User logged in.
ftp> cd httpdocs/testdirectory/
250 CWD command succesful.
ftp> binary
200 Type set to I.
ftp> put F:\test.jpg
200 PORT command successful
150 Opening BINARY mode data connection.




Code:
Public Sub Ftp_Upload_File()
Const cFTPServer As String = "ftp.xxxxxxx.nl"     'hier staat mijn website.
Const cFTPPort = 21
Const cFTPCommandsFile As String = "FTP_commands.txt"


    Dim inputValue As Variant
    Dim FTPusername As String, FTPpassword As String
    Dim filenum As Integer
    Dim FTPcommand As String
    Dim wsh As Object
    
    filenum = FreeFile
    Open cFTPCommandsFile For Output As #filenum
    Print #filenum, "!REM upload .jpg file"             'Use !REM for comments with a Windows ftp server
    Print #filenum, "open " & cFTPServer & " " & cFTPPort
    Print #filenum, "user " & "xxxxxxxx" & " " & "xxxxxxxx"
    ''Print #filenum, "user " & FTPusername & " " & FTPpassword
    Print #filenum, "cd httpdocs/testdirectory/"
    Print #filenum, "binary"
    Print #filenum, "put " & QQ(ThisWorkbook.Path & "\test.jpg")
    ''Print #filenum, "put " & QQ(ThisWorkbook.Path & "\test.jpg")
    Close #filenum
    
    'Construct ftp command line, specifying the file containing FTP commands.  The -n parameter suppresses auto-login
    'upon initial connection because we want to use the username and password specified in the command file
    
    FTPcommand = "ftp -i -n -s:" & QQ(cFTPCommandsFile)
    
    CreateObject("WScript.Shell").Run Command:=FTPcommand, WindowStyle:=1, waitonreturn:=True
        
    'Delete the ftp commands file so that the username and password are not left lying around
    
    Kill cFTPCommandsFile
    
    MsgBox "Finished"
            
End Sub

Private Function QQ(text As String) As String
    QQ = Chr(34) & text & Chr(34)
End Function
 
Wat verwacht je dan nog dat er zou gebeuren? Het bestand is op de FTP server gezet en verder doet het programma dan niets meer.
 
Laatst bewerkt:
Hallo edmoor

was het maar waar als ik namelijk op hand inlog en kijk op de site staat het er namelijk niet.

dat is nu juist het probleem.

groet kobus.
 
Heb je dat in FTP al eens met de hand gedaan? Misschien dat je dan kunt zien of en waar er iets mis gaat.
 
na de volgende opdracht in ftp

ftp> put F:\test.jpg

krijg ik het volgende antwoord

200 PORT command successful

150 Opening BINARY mode data connection.

na het antwoord 150 gebeurt er niets meer.
ik zit te wachten op :

226 BINARY Transfer complete.
???
 
het kan met 2 regels:

Vervang ~~ door een bestandsnaam (wijzig eventueel ook het pad G:\OF\
Vervang ** door de naam van de website
Vervang verder de inlognaam, het wachtwoord, het uploadbestand en eventueel het pad op de webserver

Code:
Sub ftpscript_upload_snb()
    CreateObject("scripting.filesystemobject").CreateTextFile("G:\OF\~~.ftp").Write Replace("open ftp.***.nl|inlognaam|wachtwoord|binary|cd domains/***.nl/public_html/bestanden|send bestandsnaamvol|quit", "|", vbCrLf)
    Shell "ftp -v -i -s:G:\OF\~~.ftp"
End Sub
 
Lijkt mij dat je eerst succesvol handmatige communicatie/bestandsoverdracht tot stand moet brengen voordat je er een programma voor kunt gaan schrijven.
Mogelijk moet je het PASV commando nog invoeren om succesvol ook een data-verbinding tot stand te brengen (de commando-verbinding werkt wel; bij ftp-overdrachten zijn 2 verbindingen betrokken, namelijk 1 voor de commando's en 1 voor de data/transfer/upload/download).
Overigens ga ik er hier vanuit dat je niet zelf die Ftp-server hebt ingericht maar (bijv.) een hosting-bedrijf het voor je klaargezet heeft.

Tijs.
 
hallo.

@snb

heb het geprobeerd volgens jou omschrijving maar waarschijnlijk doe ik iets fout !!

@dnties

ik heb eens gekeken bij mijn hosting-bedrijf en gezocht op ftp upload.

Het FTP programma werkt in passive mode en niet in active mode. Kijk dit na bij de instellingen van het programma.
Je gebruikt niet de juiste poort, voor FTP is dit poort 21.

tja dit staat er in mijn script FTPPort = 21
waar en hoe zet ik het in passive mode ?
 
In het standaard met Windows meegeleverde FTP programma zou je met quote PASV de verbinding in Passive mode moeten kunnen zetten.
Test het uit zou ik zeggen.

Tijs.
 
Toon je code zonder inlognaam en wachtwoord.
Misschien is het iets heel simpels..
 
@snb: jouw code maakt een commando-file om te laten uitvoeren door ftp.exe maar die zet de sessie niet in passive mode, toch??????
Mogelijk werkt jouw code dus als je na het inlog-gedeelte het commando quote PASV invoegt.
Tijs.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan