網站首頁 語言 會計 互聯網計算機 醫學 學歷 職場 文藝體育 範文
當前位置:學識谷 > 計算機 > php語言

PHP實現文件上傳和多文件上傳

欄目: php語言 / 發佈於: / 人氣:1.61W

PHP實現文件上傳和多文件上傳的相關資料,還為大家分享瞭解決如何修改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 (

Tags:文件 PHP