0

HTTPを使用してファイルをダウンロードしたいのですが。どうすればいいのですか?

4

1 に答える 1

1

これをさらに調査した結果、先週の提案を並べ替えました。

  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.
    
  2. 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 ページも参照してください。

  3. App:Run(cCommand)外部アプリケーションを起動するために使用できる方法があるようです

于 2011-12-27T22:42:30.670 に答える