利用Perl開發Internet/Intranet應用之二

weixin_34262482發表於2011-04-26

利用Perl開發Internet/Intranet應用之二

----3 圖形檔案的處理

----雖然client經常向伺服器申請的都是text/html檔案,但是伺服器也可以回送GIF、JPG等圖形檔案,我們只需在資料的header中指明即可。假如我們用< imgsrc="http://10.0.0.1/Scripts/te.pl" >語句呼叫CGI程式,向伺服器申請一個GIF檔案,則伺服器收到請求後會以二進位制碼的形式回送一個GIF的圖形檔案給client。te.pl源程式如下:


#!/bin/Perl
#如果該路徑已加入PATH中,上句可省
$MY_FILE_NAME='c:/InetPub/wwwroot/photo/1.gif';
#圖形檔案存放的路徑
$CHUNK_SIZE=4096;
#如果圖形檔案較大,該值可相應取大一些

#header
print"HTTP/1.0200OK\n";
print"Content-type:image/gif\r\n";
print"\r\n";
#如果傳輸的圖形檔案為JPG檔案,
只需把"image/gif"改為"image/jpeg"

open(MY_FILE,"< $MY_FILE_NAME")
ordie("Can'topen$MY_FILE_NAME:$!\n");
binmode(MY_FILE);
binmode(STDOUT);
#設定傳輸模式為二進位制程式碼
while($cb=read(MY_FILE,$data,$CHUNK_SIZE))
{
print$data;
}
close(MY_FILE);


----4 如何實現伺服器重導

----伺服器重導也就是ServerRedirection。我們不但可以利用CGI程式產生虛擬檔案,還可以要求伺服器送出一個已經存在的檔案(該檔案可以是本伺服器的,也可以是網上任意的頁面),這就是伺服器重導。詳見下圖:


1請求2
------ >---- >
4伺服器重導3
client< ------server
< ----CGI(Application)
5產生虛擬檔案
< ----

----做法是:在CGI程式中不要header(即不要print"HTTP/1.0200OK\n";print"Content-Type:text/html\n\n";這兩行)和多加一行print"Location:http://***","\n\n";即可。(http://***為任意的url地址)

----源程式為:

----#!/bin/perl
----print"Location:http://***","\n\n";

----另外,可用JavaScriptForclient的語句書寫,但含重導語句的頁面需先出現,會有閃爍的效果。附程式如下:

< Script >
Location.href="http://***";
< /Script >

相關文章