歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> Linux文化

如何用PHP實現文件上傳例子


上載文件表單網頁:updatefile.htm
<html>
<head>
<title>上載文件表單</title>
</head>
<body>
<form ENCTYPE="multipart/form-data" ACTION="updatefile.php3" METHOD="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="1000">
<div align="center"><center> 請選取文件:
<input NAME="userfile" TYPE="file">
<input TYPE="submit" VALUE="Send File">
</center></div>
</form>
</body>
</html>

----------------------------------------------------------------

處理上載文件網頁:updatefile.php3

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=gb2312">
<title>處理上載文件</title>
</head>
<body>
<?
copy($userfile, "newfilename");
echo $userfile." - 用戶上傳到服務器上的文件臨時存放的名稱<br>";
echo $userfile_name." - 在用戶機器上該文件的原始名稱<br>";
echo $userfile_size." - 上傳文件的實際字節數<br>";
echo $userfile_type." - 如果用戶的浏覽器提供了這個信息的話,
它表示mime的類型。例如
image/gif<br>";
?>
</body>
</html>

----------------------------------------------------------------

注意:文件上載後必須拷貝到新的地方或重新更名,
否則當進程執行完後,上載樣本將被刪除


如何用PHP3實現文件上載(實例2)

PHP3是一種非常強大的CGI腳本語言,就其語言特點基本上源於C,
就其實現方式而言更象PERL,而其對數據庫的內在支持更使之成為ASP
的強大對手。

首先在前台必須有一個界面

<HTML>
<HEAD>
<TITLE>文件上載界面</TITLE>
</HEAD>
<BODY><TABLE><CENTER>
<FORM ENCTYPE = "multipart/form-data" NAME = "SubmitForm"
ACTION = "upload.php3" METHOD = "POST">
<INPUT TYPE = "hidden" NAME = "MAX_FILE_SIZE" VALUE ="1000000">
<TR>
<TD><INPUT NAME = "UploadFile" TYPE = "file" SIZE = "30"></TD>
</TR>
<TR>
<TD><INPUT NAME = "submit" VALUE = "提交" TYPE = "submit"></TD>
<TD><INPUT NAME = "reset" VALUE = "重置" TYPE = "reset"></TD>
</TR>
</FORM></CENTER></TABLE></BODY>
</HTML>
值得注意的是一個 MAX_FILE_SIZE的隱藏值域,通過設置其VALUE可
以限制上載文件的大小。
然後在後台實現文件上載操作。如果只是最基本的上載,寥寥幾行
就可以搞定

<?
If($UploadFile != "none")
{
copy($UploadFile,"$UploadFile_name");
unlink($UploadFile);
}
else
{
echo "你沒有選擇任何文件上載!";
}
?>
因為form傳遞過來的值自動賦值給同名變量,所以直接通過
$UploadFile可以訪問上載的文件,但由於這是一個保存文件的變量,因此
文件名字必須通過另外一個$UploadFile_
name變量取得。在拷貝文件後刪去臨時文件(unlink)。
上面的代碼完全可以工作,但實際應用中漏洞百出,讓我們逐步來完善之

首先,上載的文件必須有一個固定的目錄保存,我們在這裡用一個
$UploadPath變量保存之,如

$UploadPath = "/home/flier/upload/";
或復雜一點的自動定位,如
$UploadPath = AddSlashes(dirname
($PATH_TRANSLATED))."\\upload\\";
$PATH_TRANSLATED顧名思義是當前傳送目錄,
我們假定以其一個名為upload
的子目錄來保存上載的文件。dirname函數返回其目錄名,
然後加上子目錄名
然後用一個變量$FileName保存完整的上載後文件名和路徑
$FileName = $UploadPath.$UploadFile_name;
其次,我們還想讓用戶得知上載文件的簡要信息,如上載文件的大小
if($UploadFile_size <1024)
//上載文件大小
{
$FileSize = (string)$UploadFile_size . "字節";
}
elseif($UploadFile_size <(1024 * 1024))
{
$FileSize = number_format((double)
($UploadFile_size / 1024), 1) . " KB";
}
else
{
$FileSize = number_format((double)
($UploadFile_size / (1024 * 1024)), 1) . " MB";
}
number_format函數起到格式化輸出的作用,具體用法請參照手冊
下一步我們必須考慮到文件已經存在和拷貝操作失敗的情況,並提
供相應的提示信息

if(!file_exists($FileName))
{
if(copy($UploadFile,$FileName))
{
echo "文件 $UploadFile_name
($FileSize)上載成功!";
}
else
{
echo "文件 $UploadFile_name上載失敗!";
}
unlink($UploadFile);
}
else
{
echo "文件 $UploadFile_name已經存在!";
}
然後我們應該考慮到大文件上載時容易出現超時的情況,可以用
set_time_limit($TimeLimit);加大超時限制時間。
最後,把截面和實現代碼綜合到一個單獨的文件中,為了實現這
個想法,我們通過在 form中添加一個隱含值
<INPUT TYPE = "hidden" NAME = "UploadAction" VALUE = "1">指出
當前的狀態(界面或實現),以便區分對待完成代碼如下
(文件名upload.php3)

<?
if(!$UploadAction):
?>
<HTML>
<HEAD>
<TITLE>文件上載界面</TITLE>
</HEAD>
<BODY><TABLE><CENTER>
<FORM ENCTYPE = "multipart/form-data" NAME = "SubmitForm"
ACTION = "upload.php3" METHOD = "POST">
<INPUT TYPE = "hidden" NAME = "MAX_FILE_SIZE" VALUE ="1000000">
<INPUT TYPE = "hidden" NAME = "UploadAction" VALUE = "1">
<TR>
<TD><INPUT NAME = "UploadFile" TYPE = "file" SIZE = "30"></TD>
</TR>
<TR>
<TD><INPUT NAME = "submit" VALUE = "提交" TYPE = "submit"></TD>
<TD><INPUT NAME = "reset" VALUE = "重置" TYPE = "reset"></TD>
</TR>
</FORM></CENTER></TABLE></BODY>
</HTML>
<?
else:
?>
<HTML>
<HEAD>
<TITLE>文件上載代碼</TITLE>
</HEAD>
<BODY>
<?
$UploadAction=0;

$TimeLimit=60; /*設置超時限制時間
缺省時間為 30秒
設置為0時為不限時 */
set_time_limit($TimeLimit);

If(($UploadFile != "none")&&
($UploadFile != ""))
{
$UploadPath = AddSlashes(dirname($PATH_TRANSLATED))."\\upload\\";
//上載文件存放路徑
$FileName = $UploadPath.$UploadFile_name; //上載文件名
if($UploadFile_size <1024) //上載文件大小
{
$FileSize = (string)$UploadFile_size . "字節";
}
elseif($UploadFile_size <(1024 * 1024))
{
$FileSize = number_format((double)($UploadFile_size / 1024), 1) . " KB";
}
else
{
$FileSize = number_format((double)($UploadFile_size/(1024*1024)),1)."MB";
}

if(!file_exists($FileName))
{
if(copy($UploadFile,$FileName))
{
echo "文件 $UploadFile_name ($FileSize)上載成功!";
}
else
{
echo "文件 $UploadFile_name上載失敗!";
}
unlink($UploadFile);
}
else
{
echo "文件 $UploadFile_name已經存在!";
}
}
else
{
echo "你沒有選擇任何文件上載!";
}

set_time_limit(30); //恢復缺省超時設置
?>
<BR><A HREF = "upload.php3">返回</A>
</BODY>
</HTML>
<?
endif;
?>


摘自:http://www.chinaasp.com


Copyright © Linux教程網 All Rights Reserved