PHP新手上路(八)
更新時(shí)間:2006年10月09日 00:00:00 作者:
7. 文件上傳
你可以利用PHP實(shí)現(xiàn)文件的上傳功能,注意客戶端的瀏覽器應(yīng)該是Netscape3以上或者IE3以上的版本。同時(shí),因?yàn)楸境绦蚺c你的PHP配置文件(PHP3為php3.ini,PHP4為php.in)設(shè)置有關(guān)。在執(zhí)行該程序之前請(qǐng)先檢查您的PHP配置文件有沒有做好如下的設(shè)置:
將;upload_tmp_dir該行的注釋符,即前面的分號(hào)“;”去掉,使該行在php.ini文檔中起作用。upload_tmp_dir是用來定義上傳文件存放的臨時(shí)路徑,在這里你還可以給其定義一個(gè)絕對(duì)路徑,例如:upload_tmp_dir = d:upload 當(dāng)然,此時(shí)你的d:upload目錄必須有讀寫權(quán)限。
如果你在你的.php3程序里已經(jīng)定義了上傳的路徑,此時(shí)上傳文件的路徑以.php3程序里定義的路徑為基準(zhǔn)。在下例中,receiver.php3文件就指定了用于存放上傳文件的目錄是:d:upload。
upload_max_filesize 是用來限制PHP處理的上載文件大小的最大值,以字節(jié)計(jì)算,缺省值為2097152= 2*1024*1024字節(jié)(2兆),你可以通過修改該缺省值來定義最大的上載文件大小。
修改后不要忘了重啟Apache,IIS或PWS服務(wù)哦。
同時(shí)在PHP中,文件上載還有幾點(diǎn)是值得注意的:
1. 在form表單中要將method屬性設(shè)為post,enctype屬性設(shè)為multipart/form-data;
2. 在form表單中可以加一個(gè)hidden類型的input框,其中名字為 MAX_FILE_SIZE的隱藏值域,通過設(shè)置其VALUE可以限制上載文件的大小。當(dāng)然,這個(gè)值不可能超過PHP的配置文件(PHP3為php3.ini,PHP4為php.ini)中的upload_max_filesize,注意這個(gè)input框一定要放在所有file類型的input框前面,否則也是無效的哦;
3. 在PHP程序運(yùn)行完后,上傳文件被放在了臨時(shí)目錄下。如果上傳文件沒有被改名或移動(dòng),那么在請(qǐng)求的最后該文件將自動(dòng)被從臨時(shí)文件夾中刪除,所以我們最好立即將新的上傳文件上傳移到一個(gè)永久目錄下或更改其文件名。
首先我們需要一個(gè)上載文件的表單網(wǎng)頁(upload.htm):
<HTML>
<HEAD>
<TITLE>Upload Your File</TITLE>
</HEAD>
<BODY>
<FORM ACTION="receiver.php3"
ENCTYPE="multipart/form-data" METHOD=POST>
<INPUT TYPE="HIDDEN"
NAME="MAX_FILE_SIZE" VALUE="2000000">
<INPUT TYPE="FILE"
NAME="uploadfile" SIZE="24" MAXLENGTH="80">
<BR><BR>
<INPUT TYPE="SUBMIT" VALUE="Upload File!"
NAME="sendit">
<INPUT TYPE="SUBMIT" VALUE="Cancel"
NAME="cancelit"><BR>
</FORM>
</BODY>
</HTML>
處理上載文件的PHP文件(receiver.php3)
<?
function do_upload ()
{
global $uploadfile, $uploadfile_size;
global $local_file, $error_msg;
if ( $uploadfile == "none" )
{
$error_msg = "對(duì)不起,你沒有選定任何文件上傳!";
return;
}
if ( $uploadfile_size > 2000000 )
{
$error_msg = "對(duì)不起,你要上傳的文件太大了!";
return;
}
$the_time = time ();
// 在這里指定你用來存放上傳文件的目錄,你需要對(duì)以下目錄有寫權(quán)限
// 同時(shí),我們也可以給上傳文件指定另外的目錄,如:$upload_dir = "/local/uploads";
$upload_dir = "d:/upload";
$local_file = "$upload_dir/$the_time";
if ( file_exists ( '$local_file' ) )
{
$seq = 1;
while ( file_exists ( "$upload_dir/$the_time$seq" ) ) { $seq++; }
$local_file = "$upload_dir/$the_time$seq";
};
rename ( $uploadfile, $local_file );
display_page ();
}
function display_page ()
{
// 這里是你的頁面內(nèi)容
}
?>
<HTML>
<HEAD>
<TITLE>php3 Receiving Script</TITLE>
</HEAD>
<BODY>
<?
if ( $error_msg ) { echo "<B>$error_msg</B><BR><BR>"; }
if ( $sendit )
{
do_upload ();
echo "文件上載成功!";
}
elseif ( $cancelit )
{
header ( "Location: $some_other_script" );
echo "文件上載失敗!";
exit;
}
else
{
some_other_func ();
}
?>
</BODY>
</HTML> v
你可以利用PHP實(shí)現(xiàn)文件的上傳功能,注意客戶端的瀏覽器應(yīng)該是Netscape3以上或者IE3以上的版本。同時(shí),因?yàn)楸境绦蚺c你的PHP配置文件(PHP3為php3.ini,PHP4為php.in)設(shè)置有關(guān)。在執(zhí)行該程序之前請(qǐng)先檢查您的PHP配置文件有沒有做好如下的設(shè)置:
將;upload_tmp_dir該行的注釋符,即前面的分號(hào)“;”去掉,使該行在php.ini文檔中起作用。upload_tmp_dir是用來定義上傳文件存放的臨時(shí)路徑,在這里你還可以給其定義一個(gè)絕對(duì)路徑,例如:upload_tmp_dir = d:upload 當(dāng)然,此時(shí)你的d:upload目錄必須有讀寫權(quán)限。
如果你在你的.php3程序里已經(jīng)定義了上傳的路徑,此時(shí)上傳文件的路徑以.php3程序里定義的路徑為基準(zhǔn)。在下例中,receiver.php3文件就指定了用于存放上傳文件的目錄是:d:upload。
upload_max_filesize 是用來限制PHP處理的上載文件大小的最大值,以字節(jié)計(jì)算,缺省值為2097152= 2*1024*1024字節(jié)(2兆),你可以通過修改該缺省值來定義最大的上載文件大小。
修改后不要忘了重啟Apache,IIS或PWS服務(wù)哦。
同時(shí)在PHP中,文件上載還有幾點(diǎn)是值得注意的:
1. 在form表單中要將method屬性設(shè)為post,enctype屬性設(shè)為multipart/form-data;
2. 在form表單中可以加一個(gè)hidden類型的input框,其中名字為 MAX_FILE_SIZE的隱藏值域,通過設(shè)置其VALUE可以限制上載文件的大小。當(dāng)然,這個(gè)值不可能超過PHP的配置文件(PHP3為php3.ini,PHP4為php.ini)中的upload_max_filesize,注意這個(gè)input框一定要放在所有file類型的input框前面,否則也是無效的哦;
3. 在PHP程序運(yùn)行完后,上傳文件被放在了臨時(shí)目錄下。如果上傳文件沒有被改名或移動(dòng),那么在請(qǐng)求的最后該文件將自動(dòng)被從臨時(shí)文件夾中刪除,所以我們最好立即將新的上傳文件上傳移到一個(gè)永久目錄下或更改其文件名。
首先我們需要一個(gè)上載文件的表單網(wǎng)頁(upload.htm):
<HTML>
<HEAD>
<TITLE>Upload Your File</TITLE>
</HEAD>
<BODY>
<FORM ACTION="receiver.php3"
ENCTYPE="multipart/form-data" METHOD=POST>
<INPUT TYPE="HIDDEN"
NAME="MAX_FILE_SIZE" VALUE="2000000">
<INPUT TYPE="FILE"
NAME="uploadfile" SIZE="24" MAXLENGTH="80">
<BR><BR>
<INPUT TYPE="SUBMIT" VALUE="Upload File!"
NAME="sendit">
<INPUT TYPE="SUBMIT" VALUE="Cancel"
NAME="cancelit"><BR>
</FORM>
</BODY>
</HTML>
處理上載文件的PHP文件(receiver.php3)
<?
function do_upload ()
{
global $uploadfile, $uploadfile_size;
global $local_file, $error_msg;
if ( $uploadfile == "none" )
{
$error_msg = "對(duì)不起,你沒有選定任何文件上傳!";
return;
}
if ( $uploadfile_size > 2000000 )
{
$error_msg = "對(duì)不起,你要上傳的文件太大了!";
return;
}
$the_time = time ();
// 在這里指定你用來存放上傳文件的目錄,你需要對(duì)以下目錄有寫權(quán)限
// 同時(shí),我們也可以給上傳文件指定另外的目錄,如:$upload_dir = "/local/uploads";
$upload_dir = "d:/upload";
$local_file = "$upload_dir/$the_time";
if ( file_exists ( '$local_file' ) )
{
$seq = 1;
while ( file_exists ( "$upload_dir/$the_time$seq" ) ) { $seq++; }
$local_file = "$upload_dir/$the_time$seq";
};
rename ( $uploadfile, $local_file );
display_page ();
}
function display_page ()
{
// 這里是你的頁面內(nèi)容
}
?>
<HTML>
<HEAD>
<TITLE>php3 Receiving Script</TITLE>
</HEAD>
<BODY>
<?
if ( $error_msg ) { echo "<B>$error_msg</B><BR><BR>"; }
if ( $sendit )
{
do_upload ();
echo "文件上載成功!";
}
elseif ( $cancelit )
{
header ( "Location: $some_other_script" );
echo "文件上載失敗!";
exit;
}
else
{
some_other_func ();
}
?>
</BODY>
</HTML> v
相關(guān)文章
PHP 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
PHP 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性...2006-10-10IIS php環(huán)境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安裝與配置
IIS即可以支持php也可以支持asp.相信得到不少人青睞. 下面的配置文檔希望可以幫助大家順利完成php環(huán)境搭建.不正確的地方請(qǐng)大家指正批評(píng).2008-11-11PHP5權(quán)威編程閱讀學(xué)習(xí)筆記 附電子書下載
PHP5中,使用新的統(tǒng)一的構(gòu)造函數(shù)命名方式:__construct(),當(dāng)然,使用類名同樣也是可以的2012-07-07