PHP實現文件上傳和多文件上傳的相關資料,還為大家分享瞭解決如何修改PHP上傳文件的大小限制問題的方法,需要的朋友可以參考下。
在PHP程序開發中,文件上傳是一個使用非常普遍的功能,也是PHP程序員的必備技能之一。值得高興的是,在PHP中實現文件上傳功能要比在Java、C#等語言中簡單得多。下面我們結合具體的代碼實例來詳細介紹如何通過PHP實現文件上傳和多文件上傳功能。
要使用PHP實現文件上傳功能,我們先來編寫兩個php文件:和。其中,頁面用於提交文件上傳的表單請求,頁面用於接收上傳的文件並進行相應處理。
首先,我們來編寫一個簡單的文件,由於其中涉及的主要是html代碼,比較簡單,因此不再贅述,頁面的詳細代碼如下:
<?php
//設置編碼為UTF-8,以避免中文亂碼
header('Content-Type:text/html;charset=utf-8');
?>
<!DOCTYPE html>
<html>
<head>
<title>文件上傳表單頁面</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
文件1:<input name="upload_file1" type="file" /><br/>
文件2:<input name="upload_file2" type="file" /><br/>
<input type="submit" value="上傳" />
</form>
</body>
</html>
值得注意的是,由於在HTTP協議設計之初,它並不支持文件上傳功能,form表單的encrypt屬性的默認值為application/x-www-form-urlencoded,它只能用於提交一般的表單請求。如果提交的表單中包含需要上傳的文件,我們需要將enctype的屬性值改為multipart/form-data才能實現文件上傳功能。此外,method的屬性值必須為post。
接着,我們繼續編寫文件的代碼。
<?php
//設置編碼為UTF-8,以避免中文亂碼
header('Content-Type:text/html;charset=utf-8');
$first_file = $_FILES['upload_file1']; //獲取文件1的信息
$second_file = $_FILES['upload_file2']; //獲取文件2的信息$upload_dir = 'D:/upload/'; //保存上傳文件的目錄//處理上傳的文件1
if ($first_file['error'] == UPLOAD_ERR_OK){
//上傳文件1在服務器上的臨時存放路徑
$temp_name = $first_file['tmp_name'];
//上傳文件1在客户端計算機上的真實名稱
$file_name = $first_file['name'];
//移動臨時文件夾中的文件1到存放上傳文件的目錄,並重命名為真實名稱
move_uploaded_file($temp_name, $upload_dir.$file_name);
echo '[文件1]上傳成功!<br/>';
}else{
echo '[文件1]上傳失敗!<br/>';
}
//處理上傳的文件2
if ($second_file['error'] == UPLOAD_ERR_OK){
//上傳文件2在服務器上的臨時存放路徑
$temp_name = $second_file['tmp_name'];
//上傳文件2在客户端計算機上的真實名稱
$file_name = $second_file['name'];
//移動臨時文件夾中的文件2到存放上傳文件的目錄,並重命名為真實名稱
move_uploaded_file($temp_name, $upload_dir.$file_name);
echo '[文件2]上傳成功!<br/>';
}else {
echo '[文件2]上傳失敗!<br/>';
}
?>
在PHP中,當瀏覽器客户端提交過來的表單請求中包含上傳的文件時,PHP會將上傳的`文件先暫時存放在臨時目錄中(在Windows操作系統中,默認的臨時目錄一般為C:/Windows/Temp),然後將上傳文件的相關信息存放在超全局變量$_FILES中。因此,我們只需要通過$_FILES數組獲取上傳的文件信息,然後對其進行相應的處理操作即可。下面,我們來看看通過瀏覽器上傳A.gif和B.gif兩個圖片文件時,使用print_r()函數輸出超全局變量$_FILES的詳細信息:
Array ( [upload_file1] => Array (