我无法解决这个问题,尽管它一定只是一个非常小的语法问题,正如您将看到的那样:事实上,我正在寻找的只是一小段语法,除非我打算做的事情是不可能的(但是我看不出它为什么不可能......)。
我已经编写了一个函数来在服务器端将图像编码为 Base64,因为我想将大量图像存储到一个数组中:
因此,使用 Base64,我可以将图像下载为可以组织成数组的普通字符串,然后在我选择了正确的图像和正确的时刻时将它们放入对象中,而无需再次引用服务器,这样用户无需等待。
然后我做这样的事情:
第一阶段:
function download64(imageUrl) //->string { // 请求服务器将 'imageUrl' 作为 base64 字符串发送 var tx = DoTheJob(); // ...通过ajax连接并将base64转换的图像作为字符串下载到var 'tx' return tx }
在这个阶段,我将图像保存在客户端的“tx”Base64 字符串中。稍后我想在名为“cadre”的 div 中显示我的图像,所以我执行以下操作:
第二阶段:我只需调用“display64”函数将我的图像设置为屏幕上的“干部”div-object:
display64("干部",tx);
使用此功能:
function display64(destinationDiv,imgText64) //->void
{ // display 'imgText64' into destinationDiv
var oImg = "<img alt='' src='data:image/jpg;base64," + imgText64 + "'>";
var x = document.getElementById(destinationDiv);
x.innerHTML = oImg;
}
现在显示图像。不幸的是,这只适用于 Firefox,因为 Internet Explorer 8 无法读取 32Kb 以上的 Base64 图像!在我的企业中,我们只使用 IE 8!
然后我放弃了我的 base64 编码器并决定将图像作为二进制字符串获取,尽管我最初遇到了 nul 字符的问题,但我可以管理它。
现在,我的二进制字符串包含源 JPG 文件的精确副本(包括我在服务器端编码然后在客户端恢复的零)。所以,我现在需要的是简单的函数'displayBin',但我在网上找不到语法:
function displayBin(destinationDiv,imgTextBin) //->void
{ // display 'imgTextBin' into destinationDiv
var oImg = "<img alt='' src='??????? + imgTextBin + "'>"; // What's the syntax here, please?
var x = document.getElementById(destinationDiv);
x.innerHTML = oImg;
}
任何人都可以帮忙吗?非常感谢。