蓝色信仰

博客园 首页 新随笔 联系 订阅 管理
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 在编写某个hta的用户环境分析工具的时候,经常发现用户被一些莫名其妙的代理服务器所劫持以后,一个正常的文本请求却下载到了一个图片。这种log看多了以后sidney就开始投诉了,想搜集到用户那里收到的到底是个什么图片。

这个图片用户那里虽然可以看,但是要生成到log里面就要另外保存一个文件,如果要上传的话还要开发相应的图片上传功能,这就麻烦了。
 
当然还可以用eml或者mht的形式吧图片打包在log里面,这样图片就会以base64形式编码进去嵌在log的文本里面了。但是hta记得似乎控制save命令的时候不能制定mht格式(没试过),eml要依赖客户端有邮件客户端,还要能通过js操控,更麻烦。
 
因此最简单的看起来就是zishun写的《利用HTML5对文件进行base64转换》方案了,只要把图片转成DATAURI,就可以很容易的把图片信息嵌入到页面里面并在现代浏览器里面展现。这个方案唯一的问题是,仅限非IE。
 
还好IE其实也有类似的功能,并且效率更高,唯一的问题是要依赖activex,不过这再hta里面就不算问题了。
 
IE下的图片文件(图片)base64编码代码是这样的:
 
<SCRIPT LANGUAGE="JavaScript">
<!--
var x= new ActiveXObject("Msxml2.XMLHTTP.6.0");
x.onreadystatechange
=function(){
    
if(x.readyState<4)return;
    
var xml_dom = new ActiveXObject("MSXML2.DOMDocument"); 
    
var tmpNode = xml_dom.createElement("tmpNode"); 
    tmpNode.dataType 
= "bin.base64"
    tmpNode.nodeTypedValue 
= x.responseBody; 
    base64string
=tmpNode.text.replace(/\n/g,"");
    document.write(
"<img src=\"data:image/bmp;base64,"+base64string+"\">")

}
x.open(
"get","http://www.blogjava.net/images/blogjava_net/emu/1359/o_emu120.jpg",true);
x.send(
"");
//-->
</SCRIPT>
 
 
posted on 2011-08-28 12:11 emu 阅读(2510) 评论(2)  编辑  收藏


评论

# re: IE下对文件(图片)进行base64转换 2011-08-28 23:59 Meteoric
hta果然够强大,就几行代码,我是用flash实现编码和解码,不知道使用hta能不能把base64的字符串再转成图片呢

flash实现的链接地址:http://drmcmm.baidu.com/media/id=n1DsP1c1nWf&gp=401&time=nHnkPjc1PWfknf.swf



  回复  更多评论 
  

# re: IE下对文件(图片)进行base64转换 2011-08-30 00:40 emu
把stream用fso写到文件系统呗。@Meteoric
其实不一定要用hta的,IE下htm都支持activeX,只是可能要用户确认权限。我这里是碰巧再维护个hta而已。  回复  更多评论 
  
 
posted on 2013-01-04 19:06  蓝色信仰  阅读(4130)  评论(0编辑  收藏  举报