php檔案上傳-配置php.ini檔案以及預定義變數$_FILES
一:配置 php.ini 檔案
想要順利的實作上傳功能,首要做的就是在 php.ini 中開啟檔案上傳,并對其中的一些引數作出合理的設定,找到 File Upioads 項,可以看到下面有 3 屬性,表示含義如下:
-
file_uploads:如果值為 on,說明服務器支持上傳檔案;如果為 off,則表示不支持,
-
upload_tem_dir:上傳檔案臨時目錄,在檔案被成功上傳之前,檔案首先存放到服務器端的臨時目錄,如果想要指定位置,可在這里設定,否則使用系統默認目錄就可以了,
-
upload_max_filesize: 服務器允許上傳的檔案的最大值,以MB為單位,系統默認是 2MB,用戶可以自行設定,
除了File Upolads項,還有幾個屬性也會影響到上傳檔案的功能,
-
max_execution_time:PHP 中一個指令所能執行的最長時間,單位是秒;
-
memory_limit : PHP 中一個指令所分配的沒存空間,單位是MB;
說明:
1.如果使用集成的安裝包來配置PHP 的開發環境,上述介紹的這些配置資訊按默認已經配置好了!
2.如果要上傳超大的檔案,需要對 php.ini 的一些引數進行修改,其中包括 upload_max_filesize服務器允許上傳的檔案的最大值,max_execution_time 一個指令所能執行的最長時間和memory_limit一個指令所分配的記憶體空間!
二:預定義變數$_FLIES
$_FLIES 變數儲存的事是上傳檔案的相關資訊,這些資訊對于上傳功能有很大的作用,該變數是一個二維陣列,預定義變數$_FILES 元素說明如下表:

下面實體創建一個上傳檔案域,通過$_FILES變數輸出上傳的檔案資料,具體示例代碼如下
<html>
<body>
<table width="500" border="1" cellpadding="0" cellspacing="0">
<!--上傳檔案的 form表單,必須有 enctype 屬性-->
<form method="post" about="" enctype="multipart/form-data">
<tr>
<td width="150" height="30" align="right" valign="middle">請選擇上傳檔案:</td>
<!--上傳檔案域,type型別為file-->
<td width="250"><input type="file" name="upfile"></td>
<!-- 提交按鈕-->
<td width="100"><input type="submit" name="submit" value="https://www.cnblogs.com/chenyingying0/p/上傳"></td>
</tr>
</form>
</table>
</body>
</html>
<?php
header("Content-Type:text/html; charset=utf-8");
if(!empty($_FILES)){ //判斷變數$_FILES是否為空
foreach ($_FILES['upfile'] as $name => $value){ //使用 foreach 回圈輸出上傳檔案資訊的名稱和值
echo $name,"=".$value."<br>";
}
}
?>
輸出結果為:

PHP檔案上傳-move_uploaded_file()函式的使用詳解
下面的實體創建一個上傳表單,允許上傳檔案大小為 1MB 一下的檔案,具體的示例代碼如下:
<html>
<body>
<table width="500" border="1" cellpadding="0" cellspacing="0">
<!--上傳檔案的 form表單,必須有 enctype 屬性-->
<form method="post" about="" enctype="multipart/form-data">
<tr>
<td width="150" height="30" align="right" valign="middle">請選擇上傳檔案:</td>
<!--上傳檔案域,type型別為file-->
<td width="250"><input type="file" name="upfile"></td>
<!-- 提交按鈕-->
<td width="100"><input type="submit" name="submit" value="https://www.cnblogs.com/chenyingying0/p/上傳"></td>
</tr>
</form>
</table>
</body>
</html>
<?php
header("Content-Type:text/html; charset=utf-8");
if(!empty($_FILES)){ //判斷變數$_FILES是否為空
$fileinfo = $_FILES['upfile'];
if($fileinfo['size']>0 && $fileinfo['size']<1000000){
move_uploaded_file($fileinfo['tmp_name'], $fileinfo['name']);
echo '上傳成功';
}else{
echo '檔案太大或未知';
}
}
?>
說明:
使用 move_uploaded_file()函式上傳檔案,在創建 form表單時,必須設定 form 表單的 enctype="multipart/form-data“,
PHP檔案上傳-多檔案上傳的示例代碼詳解
下面的實體有 2個檔案上傳域,檔案域的名字為 u_file[],提交后上傳的檔案資訊都會被保存到$_FILES['u_file']中,生成多為陣列,讀取陣列資訊,并且上傳檔案,具體實體代碼如下:
<html>
<body>
<table border="1" cellpadding="0" cellspacing="0">
<!--上傳檔案的 form表單,必須有 enctype 屬性-->
<form method="post" about="" enctype="multipart/form-data">
<tr>
<td>請選擇上傳檔案:</td>
<!--上傳檔案域,type型別為file-->
<td><input type="file" name="u_file[]"></td>
<td><input type="file" name="u_file[]"></td>
<!-- 提交按鈕-->
<td><input type="submit" name="submit" value="https://www.cnblogs.com/chenyingying0/p/上傳"></td>
</tr>
</form>
</table>
</body>
</html>
<?php
header("Content-Type:text/html; charset=utf-8");
if(!empty($_FILES['u_file']['name'])){
$file_name = $_FILES['u_file']['name'];
$file_tmp_name = $_FILES['u_file']['tmp_name'];
for($i=0;$i<count($file_name);$i++){
if($file_name[$i] != ''){
move_uploaded_file($file_tmp_name[$i], $i.$file_name[$i]);
echo '檔案'.$file_name[$i].'上傳成功<br>';
}
}
}
?>
輸出結果如下:

歡迎QQ交流討論:965794175
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/30818.html
標籤:PHP
上一篇:在C++Bulider XE3 64位編譯后, try __finally陳述句(有return)不會執行到__finally
