php進階——01 文件上傳

php.ini相關參數


file_uploads

是否允許PHP上傳文件,默認爲ON


upload_tmp_dir

上傳文件在處理之前,必須先上傳到服務器上的某個臨時文件夾;

此參數就是決定臨時目錄的路徑,此目錄需要有讀寫權限。

一般不需要改。


max_input_time

對POST/GET/PUT方式接收數據的時間限制,單位s。


max_execution_time

等待腳本執行完畢的最長時間,單位s。

如果需要上傳大文件,此配置數值不能過小!


upload_max_filesize

允許上傳文件的最大值,默認爲2MB。


post_max_size

控制POST方式提交表單時,允許接收的最大數據量(MB);

由於POST數據除了文件,還有可能包含其他表單數據,此值應大於upload_max_filesize的值。


memory_limit

PHP的內存使用上限,避免腳本過量使用系統資源;

由於上傳是內存處理得數據中除了POST數據外可能包含其他數據,此值應大於post_max_size的值。



相關錯誤

這裏寫圖片描述




單文件上傳


html代碼

<form action="upload.php" method="post" enctype="multipart/form-data">
    <input name="upload" type="file">
    <input type="submit" value="上傳文件">
</form>


php代碼

1.我們通過$_FILES獲取上傳的文件信息;

2.它返回的值是一個數組:

[upload] => [
     [name] => 文件名
     [type] => 文件類型
     [tmp_name] => 臨時路徑 + 臨時文件名
     [error] => 錯誤類型
     [size] => 大小
 ]

3.具體代碼如下

 // 1.獲取錯誤碼
 $error = $_FILES['upload']['error'];

 // 2.臨時路徑名       ↓這裏的key和input的name一致
 $tmp_name = $_FILES['upload']['tmp_name'];

 // 3.目的路徑名
 $final_name = './upload/'.$_FILES['upload']['name'];


 // 4.錯誤校驗
 if($error){

     // 5.根據錯誤碼,返回相應錯誤信息
    switch($error){
        case 1:
        case 2:
            echo "文件大小超出限制";

        case 3:
            echo "文件上傳不完整";

        case 4:
            echo "未選中上傳文件";
     }

// 6.如果沒有錯誤
}else{

    // 7.移動上傳的文件
    $result = move_uploaded_file($tmp_name, $final_name);

    // 8.輸出信息
    echo $result ? "上傳成功" : "上傳失敗";
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章