IE下对文件(图片)进行base64转换

原文:http://www.blogjava.net/emu/archive/2011/08/28/357431.html


在编写某个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>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在VB6将二进制图片文件转换Base64字符串可以通过以下步骤实现: 1. 首先,你需要读取二进制图片文件的内容。你可以使用VB6提供的Open语句打开二进制图片文件,并使用Binary读取模式来读取文件的内容。例如: ```vb Dim fileNumber As Integer fileNumber = FreeFile Open "C:\path\to\image.jpg" For Binary As #fileNumber Dim fileContent As String fileContent = Input$(LOF(fileNumber), fileNumber) Close #fileNumber ``` 此代码片段打开并读取了位于指定文件路径下的图像文件,并将其内容存储在fileContent变量。 2. 接下来,你可以使用VB6的MSXML的DOMDocument对象来进行Base64编码。首先,你需要将二进制图片内容加载到DOMDocument对象,并使用其base64Encoded属性进行编码。例如: ```vb Dim xmlDoc As Object Set xmlDoc = CreateObject("MSXML2.DOMDocument") xmlDoc.LoadXML "<root></root>" xmlDoc.documentElement.dataType = "bin.base64" xmlDoc.documentElement.nodeTypedValue = fileContent Dim base64String As String base64String = xmlDoc.documentElement.base64Encoded ``` 这段代码创建了一个DOMDocument对象,将二进制图片内容加载到根节点下,并设置了节点的dataType为"bin.base64",这样DOMDocument对象就会自动将内容以Base64格式编码。然后,你可以通过读取节点的base64Encoded属性来获取Base64字符串。 最后,你可以使用base64String变量来访问生成的Base64字符串,进行后续的处理或保存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值