明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

使用Perl開發(fā)Internet/Intranet應(yīng)用之二(3)

[摘要]----3 圖形文件的處理 ----雖然client經(jīng)常向服務(wù)器申請的都是text/html文件,但是服務(wù)器也可以回送GIF、JPG等圖形文件,我們只需在數(shù)據(jù)的header中指明即可。假如我們用< imgsrc="http://10.0.0.1/Scripts/te.pl"...
----3 圖形文件的處理

----雖然client經(jīng)常向服務(wù)器申請的都是text/html文件,但是服務(wù)器也可以回送GIF、JPG等圖形文件,我們只需在數(shù)據(jù)的header中指明即可。假如我們用< imgsrc="http://10.0.0.1/Scripts/te.pl" >語句調(diào)用CGI程式,向服務(wù)器申請一個(gè)GIF文件,則服務(wù)器收到請求后會(huì)以二進(jìn)制碼的形式回送一個(gè)GIF的圖形文件給client。te.pl源程序如下:


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

#header
print"HTTP/1.0200OK\n";
print"Content-type:image/gif\r\n";
print"\r\n";
#如果傳輸?shù)膱D形文件為JPG文件,
只需把"image/gif"改為"image/jpeg"

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


----4 如何實(shí)現(xiàn)服務(wù)器重導(dǎo)

----服務(wù)器重導(dǎo)也就是ServerRedirection。我們不但可以利用CGI程式產(chǎn)生虛擬文件,還可以要求服務(wù)器送出一個(gè)已經(jīng)存在的文件(該文件可以是本服務(wù)器的,也可以是網(wǎng)上任意的頁面),這就是服務(wù)器重導(dǎo)。詳見下圖:


1請求2
------ >---- >
4服務(wù)器重導(dǎo)3
client< ------server
< ----CGI(Application)
5產(chǎn)生虛擬文件
< ----

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

----源程序?yàn)椋?

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

----另外,可用JavaScriptForclient的語句書寫,但含重導(dǎo)語句的頁面需先出現(xiàn),會(huì)有閃爍的效果。附程式如下:

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