HTTPを使用してファイルをダウンロードしたいのですが。どうすればいいのですか?
1 に答える
これをさらに調査した結果、先週の提案を並べ替えました。
VO の「インターネット」ライブラリ内のクラス「CHttp」にはメソッド GetFile があります ( VO 2.5 の「新機能」には 10 ページに簡単な説明があります)。私はそれを試していません。おそらく次のようなものが必要になるでしょう:
local oSession as CHttp local lSuccess as logic oSession := CHttp{} oSession:ConnectRemote("foo.example.com") // Server domain name lSuccess := oSession:GetFile("bar/baz.pdf",; // Remote filename "c:\temp\baz.pdf",; // Local filename lFailIfAlreadyExists) oSession:CloseRemote() // If lSuccess, the file should be downloaded to cLocalFileName. // I don't know whether the filename arguments should use / or \ for directory separators.
ShellExecute
別の方法は、Windows関数を使用して、ファイルをダウンロードする外部プログラムを呼び出すことだと思います。ここで ShellExecute の例を見つけました。現時点で利用できる VO コンパイラ (またはヘルプ ファイル!) がないため、これは試していません。これが良い方法かどうかはわかりません。また、卑劣なファイル名を指定して悪意のあるコマンドを実行しようとする人から安全かどうかもわかりません。しかし、私は次のことがうまくいくと思います。curl.exe
ファイルのダウンロードに使用されるプログラム( curlを参照) がパス上にあることを前提としています。代わりに の完全なパスが必要になる場合がありますcurl.exe
。ファイルがデフォルトでどこに保存されるのかわかりません ( というラベルの付いたパラメーターで作業ディレクトリを指定できると思いますlpDirectory
)local cParameters as string local cURL:="http://www.example.com/interesting.htm" as string local cLocalFile:="savefile.html" as string cParameters := "-o "+cLocalFile+" "+cURL ShellExecute(NULL /*Window handle*/,; String2PSZ("open"),; String2PSZ("curl.exe"),; String2PSZ(cParameters),; NULL_PTR /* lpDirectory */,; SW_SHOWNORMAL)
ShellExecute の MSDN ページも参照してください。
App:Run(cCommand)
外部アプリケーションを起動するために使用できる方法があるようです