0

I have a vb script to download a file from an URL - the url is an ftp site: ftp://ftp.zois.co.uk/pub/jcp/

I need to download the file specified below. The script gets the file but contents are empty - tried with other CSV files on the ftp site and same problem.

Can anyone help please?

HTTPDownload "ftp://ftp.zois.co.uk/pub/jcp/JCP-scrape-2012-04-24.csv", "C:\"

Sub HTTPDownload( myURL, myPath )
' This Sub downloads the FILE specified in myURL to the path specified in myPath.
'
' myURL must always end with a file name
' myPath may be a directory or a file name; in either case the directory must exist
'
 ' Written by Rob van der Woude
' http://www.robvanderwoude.com
'
    ' Based on a script found on the Thai Visa forum
' http://www.thaivisa.com/forum/index.php?showtopic=21832

' Standard housekeeping
Dim i, objFile, objFSO, objHTTP, strFile, strMsg
Const ForReading = 1, ForWriting = 2, ForAppending = 8

' Create a File System Object
Set objFSO = CreateObject( "Scripting.FileSystemObject" )

' Check if the specified target file or folder exists,
' and build the fully qualified path of the target file
If objFSO.FolderExists( myPath ) Then
    strFile = objFSO.BuildPath( myPath, Mid( myURL, InStrRev( myURL, "/" ) + 1 ) )
ElseIf objFSO.FolderExists( Left( myPath, InStrRev( myPath, "\" ) - 1 ) ) Then
    strFile = myPath
Else
    WScript.Echo "ERROR: Target folder not found."
    Exit Sub
End If

' Create or open the target file
Set objFile = objFSO.OpenTextFile( strFile, ForWriting, True )

' Create an HTTP object
Set objHTTP = CreateObject( "WinHttp.WinHttpRequest.5.1" )

' Download the specified URL
objHTTP.Open "GET", myURL, False
objHTTP.Send

' Write the downloaded byte stream to the target file
For i = 1 To LenB( objHTTP.ResponseBody )
    objFile.Write Chr( AscB( MidB( objHTTP.ResponseBody, i, 1 ) ) )
Next

' Close the target file
objFile.Close( )
End Sub

1 Answer 1

0

That code is for downloading from HTTP. FTP is not HTTP. FTP does have a get command but if nothing else the port is almost definitely different and since there's no port specified, it's almost definitely using 80 for HTTP, while FTP uses 21 as its default. Here is a similar example using ftp. There may be other/better FTP components than what it uses, but that's the root of your problem. Also note that it's not really getting your file, it's just creating a file that never gets written to.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks - got an ftp program to sync it

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.