通过修改referer下载文件的方法


Posted in Javascript onMay 11, 2008

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> 
Javascript 相关文章推荐
JS JavaScript获取Url参数,src属性参数
Mar 09 Javascript
JS小框架 fly javascript framework
Nov 26 Javascript
jquery之empty()与remove()区别说明
Sep 10 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
Nov 08 Javascript
详细解密jsonp跨域请求
Apr 15 Javascript
详解ES6中的代理模式——Proxy
Jan 08 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
Sep 25 Javascript
vue组件开发之slider组件使用详解
Aug 21 Javascript
jQuery实现电梯导航模块
Dec 22 jQuery
jQuery实现增删改查
Dec 22 jQuery
Vue中强制组件重新渲染的正确方法
Jan 03 Vue.js
Vue实现跑马灯样式文字横向滚动
Nov 23 Vue.js
JS启动应用程序的一个简单例子
May 11 #Javascript
一段利用WSH获取登录时间的jscript代码
May 11 #Javascript
一段利用WSH修改和查看IP配置的代码
May 11 #Javascript
JS处理VBArray的函数使用说明
May 11 #Javascript
获取当前网页document.url location.href区别总结
May 10 #Javascript
用javascript获取textarea中的光标位置
May 06 #Javascript
用js实现下载远程文件并保存在本地的脚本
May 06 #Javascript
You might like
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
2011/07/01 PHP
php递归json类实例
2014/12/02 PHP
ThinkPHP入口文件设置及相关注意事项分析
2014/12/05 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
thinkPHP自定义类实现方法详解
2016/11/30 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
Jquery 表格合并的问题分享
2011/09/17 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
2016/06/13 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
如何编写jquery插件
2017/03/29 jQuery
angular.js+node.js实现下载图片处理详解
2017/03/31 Javascript
vue计算属性和监听器实例解析
2018/05/10 Javascript
JS实现可针对算术表达式求值的计算器功能示例
2018/09/04 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
浅谈python字符串方法的简单使用
2016/07/18 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
windows下Python实现将pdf文件转化为png格式图片的方法
2017/07/21 Python
Python中最大最小赋值小技巧(分享)
2017/12/23 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
python读取xml文件方法解析
2020/08/04 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
蒂娜商店:Tiina the Store
2019/12/07 全球购物
先进集体事迹材料
2014/02/17 职场文书
企业家王石演讲稿:坚持与放下
2014/04/27 职场文书
金融专业求职信
2014/08/05 职场文书
2014年质量工作总结
2014/11/22 职场文书
《迟到》教学反思
2016/02/24 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
教你使用pyinstaller打包Python教程
2021/05/27 Python
快速学习Oracle触发器和游标
2021/06/30 Oracle
Mysql binlog日志文件过大的解决
2021/10/05 MySQL
Redis 哨兵机制及配置实现
2022/03/25 Redis