----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 >
|