通過(guò)修改referer下載文件的方法
更新時(shí)間:2008年05月11日 21:28:41 作者:
遇到了一個(gè)郁悶的事:如果讓Http對(duì)象作全局變量,那么onreadystatechange只會(huì)在第一次執(zhí)行時(shí)觸發(fā),以后都不會(huì)觸發(fā)這個(gè)事件了。
只好在每次Down文件時(shí)重新創(chuàng)建一個(gè)XmlHttp對(duì)象。
GetFile.wsc
<?xml version="1.0" encoding="gb2312"?>
<component>
<?component error="true" debug="true"?>
<public>
<property name="Referer" />
<property name="Content" />
<property name="Data" />
<method name="GetFile">
<parameter name="URL" />
</method>
<method name="Save">
<parameter name="Path" />
</method>
</public>
<implements type="Behavior">
<event name="ondowncomplete" />
</implements>
<object progid="Microsoft.XmlHttp" id="Http" />
<script language="javascript">
<![CDATA[
var Referer, Content, Data;
var Stream = new ActiveXObject("ADODB.Stream");
Stream.Type = 1;
function onReady()
{
if(Http.readyState == 4)
{
Content = Http.responseText;
Data = Http.responseBody;
fireEvent("ondowncomplete");
Http.abort();
}
}
function GetFile(URL)
{
Http.onreadystatechange = onReady;
Http.open("GET", URL, true, "", "");
if(Referer) Http.setRequestHeader("Referer", Referer);
Http.send(null);
}
function Save(Path)
{
Stream.Open();
Stream.Write(Data);
Stream.SaveToFile(Path, 2);
Stream.Close();
}
]]>
</script>
</component>
test.hta
<html><head><script>
var Down = document.createElement("Comment");
document.lastChild.lastChild.appendChild(Down);
Down.style.behavior="url(GetFile.wsc)";
Down.ondowncomplete = function()
{
//document.write(Down.Content);
Down.Save(SaveTo.value);
Go.disabled=0;
alert("OK");
}
function GetFile()
{
Go.disabled = 1;
Down.Referer = Referer.value;
Down.GetFile(URL.value);
}
</script>
</head><body>
URL: <input id="URL" size="50" value="http://www.booksky.biz/SendFile.aspx?FileID=15531"><br>
Referer: <input name="Referer" size="40" value="http://www.booksky.biz"><br>
SaveTo: <input name="SaveTo" size="40" value="D:\Test.gif"><br>
<input id="Go" type=button value="下載" onclick="GetFile()">
</body></html>
復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="gb2312"?>
<component>
<?component error="true" debug="true"?>
<public>
<property name="Referer" />
<property name="Content" />
<property name="Data" />
<method name="GetFile">
<parameter name="URL" />
</method>
<method name="Save">
<parameter name="Path" />
</method>
</public>
<implements type="Behavior">
<event name="ondowncomplete" />
</implements>
<object progid="Microsoft.XmlHttp" id="Http" />
<script language="javascript">
<![CDATA[
var Referer, Content, Data;
var Stream = new ActiveXObject("ADODB.Stream");
Stream.Type = 1;
function onReady()
{
if(Http.readyState == 4)
{
Content = Http.responseText;
Data = Http.responseBody;
fireEvent("ondowncomplete");
Http.abort();
}
}
function GetFile(URL)
{
Http.onreadystatechange = onReady;
Http.open("GET", URL, true, "", "");
if(Referer) Http.setRequestHeader("Referer", Referer);
Http.send(null);
}
function Save(Path)
{
Stream.Open();
Stream.Write(Data);
Stream.SaveToFile(Path, 2);
Stream.Close();
}
]]>
</script>
</component>
test.hta
復(fù)制代碼 代碼如下:
<html><head><script>
var Down = document.createElement("Comment");
document.lastChild.lastChild.appendChild(Down);
Down.style.behavior="url(GetFile.wsc)";
Down.ondowncomplete = function()
{
//document.write(Down.Content);
Down.Save(SaveTo.value);
Go.disabled=0;
alert("OK");
}
function GetFile()
{
Go.disabled = 1;
Down.Referer = Referer.value;
Down.GetFile(URL.value);
}
</script>
</head><body>
URL: <input id="URL" size="50" value="http://www.booksky.biz/SendFile.aspx?FileID=15531"><br>
Referer: <input name="Referer" size="40" value="http://www.booksky.biz"><br>
SaveTo: <input name="SaveTo" size="40" value="D:\Test.gif"><br>
<input id="Go" type=button value="下載" onclick="GetFile()">
</body></html>
相關(guān)文章
TypeScript5.2引入新關(guān)鍵字using介紹
這篇文章主要介紹了TypeScript5.2引入新關(guān)鍵字using使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
前端通過(guò)JavaScript創(chuàng)建修改CAD圖形詳情
這篇文章介紹JavaScript創(chuàng)建修改CAD圖形,創(chuàng)建修改CAD圖形,一般是基于AutoCAD進(jìn)行二次開(kāi)發(fā),ObjectARX是AutoDesk公司針對(duì)AutoCAD平臺(tái)上的二次開(kāi)發(fā)而推出的一個(gè)開(kāi)發(fā)軟件包,它提供了以C++為基礎(chǔ)的面向?qū)ο蟮拈_(kāi)發(fā)環(huán)境及應(yīng)用程序接口,能真正快速的訪問(wèn)AutoCAD圖形數(shù)據(jù)庫(kù)2021-10-10
微信小程序request請(qǐng)求后臺(tái)接口php的實(shí)例詳解
這篇文章主要介紹了微信小程序request請(qǐng)求后臺(tái)接口php的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-09-09
next.js源碼解析getStaticProps?getStaticPaths使用場(chǎng)景
這篇文章主要為大家介紹了next.js源碼解析getStaticProps?getStaticPaths使用場(chǎng)景,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
微信小程序 跳轉(zhuǎn)傳參數(shù)與傳對(duì)象詳解及實(shí)例代碼
這篇文章主要介紹了微信小程序 跳轉(zhuǎn)傳參數(shù)與傳對(duì)象詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-03-03
高級(jí)前端必會(huì)的package.json字段知識(shí)詳解
這篇文章主要為大家介紹了高級(jí)前端必會(huì)的package.json字段知識(shí)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
微信小程序報(bào)錯(cuò):this.setData is not a function的解決辦法
這篇文章主要介紹了微信小程序報(bào)錯(cuò):this.setData is not a function的解決辦法的相關(guān)資料,希望通過(guò)本文能幫助到大家解決這樣類(lèi)似的問(wèn)題,需要的朋友可以參考下2017-09-09

