gpt4 book ai didi

javascript - ActiveXObject 直接下载到硬盘

转载 作者:行者123 更新时间:2023-12-04 01:46:40 25 4
gpt4 key购买 nike

是否有 native ActiveX 对象或类似对象可用于将源文件直接下载到我的 HDD。目前我正在使用以下内容:

function downloadToFile(url, file) {
var xhr = new ActiveXObject("msxml2.xmlhttp"),
ado = new ActiveXObject("ADODB.Stream");

xhr.open("GET", url, false);
xhr.send();
if (xhr.status === 200) {
ado.type = 1;
ado.open();
ado.write(xhr.responseBody);
ado.saveToFile(file);
ado.close();
}
}

但这感觉有点低效,原因如下:

我目前正在使用两个对象来代替可能是单个对象的对象。

整个响应存储在内存中,直到写入文件。在我使用它下载相当大的文件之前,这在大多数情况下都不是问题。

注释/编辑 :
我在微软的 MSScriptControl.ScriptControl 中工作,所以许多基于 Web 的库无济于事。

如果答案能够在收到数据时将数据写入文件,我不一定要寻找单个对象。

最佳答案

BITSAdmin

BITSAdmin 是一个 Windows 命令行工具,用于使用 Background Intelligent Transfer Service 下载和上传文件。 (位)。

注意:在 Windows 7 中,BITSAdmin声明它已被弃用,以支持 PowerShell BITS cmdlet,并且可能不会包含在 future 的 Windows 版本中。

句法:

bitsadmin /transfer job_name url local_name

JScript 版本:

var oShell = new ActiveXObject("WScript.Shell");
oShell.Run("bitsadmin /transfer myDownloadJob http://upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png C:\\Work\\wikipedia-logo.png");

.NET System.Net.WebClient 类

如果你有.NET Framework,你可以注册 System.Net.WebClient COM访问类:
C:\Windows\Microsoft.NET\Framework\v4.0.30319> regasm System.dll

然后像这样使用它:

var strURL = "http://upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png";
var strFilePath = "C:\\Work\\wikipedia-logo.png";

var oWebClient = new ActiveXObject("System.Net.WebClient");
oWebClient.DownloadFile(strURL, strFilePath);

Chilkat HTTP 库

Chilkat HTTP ActiveX library (商业)让你 download直接文件:

var strURL = "http://upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png";
var strFilePath = "C:\\Work\\wikipedia-logo.png";

var oHTTP = new ActiveXObject("Chilkat_9_5_0.Http");

// Any string unlocks the component for the 1st 30-days.
var success = oHTTP.UnlockComponent("Anything for 30-day trial");
if (success != 1) {
WScript.Echo(oHTTP.LastErrorText);
WScript.Quit();
}

success = oHTTP.Download(strURL, strFilePath);
if (success != 1)
WScript.Echo(oHTTP.LastErrorText);

curl

或者炮轰到 cURL怎么样? (免费,MIT/X 衍生许可证)?虽然我猜它算作两个对象,因为 WScript.Shell :
var oShell = new ActiveXObject("WScript.Shell");
oShell.Run("curl -o C:\\Work\\wikipedia-logo.png http://upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png");

关于javascript - ActiveXObject 直接下载到硬盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25496989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com