程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 用PHP實現文件上傳

用PHP實現文件上傳

編輯:PHP綜合

在這篇文章裡我將解釋如何用PHP實現文件上傳。

設計上傳表格

我們主要的目標是完成文件從本地計算機上傳到服務器上去。為了做到這一點,我們需要做一個表格,允許用戶選擇一個文件並可以提交它。下面是一個例子:

<HTML>
<HEAD>
<TITLE>文件上傳表格</TITLE>
</HEAD>
<BODY>
<TABLE>
<FORM ENCTYPE="multipart/form-data" NAME=MyForm ACTION=submit.php3 METHOD="POST">
<TR><TD>選擇上傳文件</TD><TD><INPUT NAME="MyFile" TYPE="File"></TD></TR>
<TR><TD COLSPAN="2"><INPUT NAME="submit" VALUE="上傳" TYPE="submit"></TD></TR>
</TABLE>
</BODY>
</HTML>

注意表格中的ENCTYPE="multipart/form-data"部分。這個一定不能錯,否則服務器將不知道你在上傳文件。

設計上傳程序

現在我們已經完成了前台部分,讓我們再仔細地考慮後台是如何接收文件並保存它到我們指定的目錄下去。下面就開始用PHP了。這是submit.php3的程序:

<?
If($MyFile != "none") {
copy($MyFile,"/home/berber/$MyFile_name");
unlink($MyFile);
}
else {
echo"你沒有上傳任何文?;
}
?>

不管你信不信,這就是整個處理過程。我們在程序中所做的就是:

1. 檢查是否一個文件已經上傳到服務器,通過If($MyFile != "none");

2. 拷貝文件到指定位置。

3. 刪除臨時文件。

當你按下了提交按鈕後,文件將會從你的計算機上傳到服務器的臨時目錄下。在臨時目錄下的文件名為一個臨時文件。應該使用file字段的name值來訪問它,在這裡為$MyFile。真正的文件名使用file字段的name值加上"_name"來訪問它,在這裡為$MyFile_name。使用copy()函數,將臨時文件$MyFile拷貝到指定目錄下,拷貝後的文件名為$MyFile_name。完成後不要忘了刪除臨時文件,不然你會有許多你不想要的文件。

設置文件名

一個可能讓程序員睡不著覺的事情就是試圖改變file字段的VALUE屬性的值。並不是很多人知道它是不可能的。盡管W3C說可以,但實際上,象IE和Netscape都不允許設置VAUE屬性的值。聽上去有點可笑,為什麼我不能設置一個初始值,這樣讓用戶使用起來更方便呢?如果你那樣做,那你就會發現你帶來了一個安全上的漏洞。可以設想一下,你登錄到我的網站,我可以改變一個表格中的file字段的值。那麼有許能阻止我把你的/etc/passwd文件上傳呢?更進一步的,我不需要你按下提交按鈕,我可先設置file字段的值,然後通過一段JavaScript程序來模擬提交動作...哇嗚...我可以處理你機器上的任何文件了。因為這個原因,浏覽器簡單地把<INPUT>標記中的file字段的VALUE字段給忽略了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved