0

URL からファイルをダウンロードする vb スクリプトがあります。URL は ftp サイトです: ftp://ftp.zois.co.uk/pub/jcp/

以下に指定されたファイルをダウンロードする必要があります。スクリプトはファイルを取得しますが、内容は空です - ftp サイトの他の CSV ファイルで試してみましたが、同じ問題が発生しました。

誰でも助けてもらえますか?

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
4

1 に答える 1

0

そのコードは、HTTP からダウンロードするためのものです。FTP は HTTP ではありません。FTPにはgetコマンドがありますが、他に何もなければポートはほぼ確実に異なり、ポートが指定されていないため、HTTPにはほぼ間違いなく80が使用されますが、FTPはデフォルトとして21を使用します. ftp を使用した同様の例を次に示しますそれが使用するもの以外の他の/より優れた FTP コンポーネントがあるかもしれませんが、それが問題の根本です。また、実際にはファイルを取得するのではなく、書き込まれることのないファイルを作成しているだけであることに注意してください。

于 2012-04-25T18:28:59.267 に答える