我已經完成了大量搜索並且答案不起作用,或者它不是一個好的解決方案。只是把一個引用到HTML類似的解決方案:如何從服務器端perl程序獲取圖像數據並使用javascript在div中顯示
<img src="html://localhost/cgi-bin/fd.cgi"/>
有兩個問題,一個是圖像將會發生變化,它會得到緩存。我知道我可以在通話中放置一個隨機參數並解決問題,但另一個問題是程序運行幾秒鐘。我使用javascript,setInterval來循環。 perl程序讀取圖像文件並對其進行註釋。這需要一段時間,3或4秒鐘,並在此期間顯示空白,所以我有兩個div,一個隱藏而另一個正在顯示。邏輯是,我將加載隱藏的圖像,當加載完成時,我會隱藏第一個,並顯示第二個,下一個傳遞,反之亦然。似乎沒有任何事情可以在「加載完成」時陷入困境。無論如何,我都沒有在調試器中看到過。
ajax調用帶來的數據,但我不知道如何顯示它。我base64編碼在Perl腳本。這是javascript。
$.ajax({ type: 'GET',
url: 'http://localhost/cgi-bin/fdmap/image.pl',
success: function(data)
{
$('#img1').html('<img src="data:image/jpg;base64,'+data+'"');
},
error: function(data)
{
console.log("Error ");
return true;
},
});
HTML:
<div id="img1"></div>
<div class="hidden" id="img2"></div>
這裏的perl的片斷
binmode STDOUT;
print $cgi->header("image/jpg;base64");
open INP,"pcb.jpg";
my $it;
while(<INP>) {
my $in = $_;
$it.=$in;
}
my $encoded = encode_base64($it);
print $encoded;
我只是用一個用於測試的小型JPG文件。一旦我弄清楚如何顯示圖像數據I「會當我從控制檯運行,我得到以下(截斷)輸出的perl腳本動態生成圖像
內容類型。:圖像/ JPG; BASE64^M ^ M /9J/4AAQSkZJRgABAQEASABIAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEP ERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4e Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCAF9AZwDASIA
如果我看看通過JavaScript調試器接收到的數據我看到:
HTTP/1.1 200 OK 日期:孫老師,2013年5月5日15時28分43秒GMT 服務器:Apache/2.2.14( Ubuntu的) 保持活動:超時= 15,最大= 99 連接:保持活動 傳輸編碼:分塊 內容類型:image/JPG; BASE64
並且數據在響應看起來與在控制檯上轉儲的數據相同。
但是沒有顯示任何內容,也沒有可以看到的錯誤消息。只是一個空白的屏幕。我一直在爲此工作好幾個小時。感謝你給與我的幫助。 哦,我可以不在乎,如果它在IE瀏覽器或不。
我想知道爲什麼你可以長時間盯着某件事,以至於你錯過了那些顯而易見的事情。你是對的。謝謝修復它。 – user1424074 2013-05-05 21:47:39