我想使用 HTTP 下载文件。我该怎么做?
问问题
223 次
1 回答
1
我对此进行了进一步调查,结果重新整理了我上周的建议:
VO 的“Internet”库中的“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.
我认为另一种方法是使用 Windows
ShellExecute
函数来调用下载文件的外部程序。我在这里找到了 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)
似乎有一种方法
App:Run(cCommand)
可用于启动外部应用程序
于 2011-12-27T22:42:30.670 回答