[轉]IE下對文件(圖片)進行base64轉換


@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而已。   回復   更多評論 
  
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM