亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

PHP上傳原理及操作實現

添加時間:2014-9-21 20:41:49  添加: 思海網絡 

關于PHP上傳文件的函數類庫,網上有許多封裝很完善,大家直接拿來用就可以。

本文章只是說下關于上傳原理和簡單的上傳操作,老鳥就無視了哈^_^~

還有一些安全性判斷比如:服務端限制能接收圖片類型的文件,而客戶端惡意將病毒文件的后綴名改為圖片配型的文件上傳。

        上傳文件: 

1、Form標簽enctype屬性

表單中enctype="multipart/form-data"是用于設置表單的MIME編碼。
默認情況,這個編碼格式是application/x-www-form-urlencoded,不能用于文件上傳;
只有使用了multipart/form-data且提交方式為Post才能完整的傳遞文件數據。

2、MAX_FILE_SIZE 隱藏字段

MAX_FILE_SIZE 隱藏字段(單位為字節)必須放在文件輸入字段之前,其值為接收文件的最大尺寸。這是對瀏覽器的一個建議,PHP 也會檢查此項。
在瀏覽器端可以簡單繞過此設置,因此不要指望用此特性來阻擋大文件。(不過鑒于友好性最好還是在表單中加上此項目,因為它可以避免用戶在花時間等待上傳大文件之后才發現文件過大上傳失敗的麻煩。)

upload.php

我們可以看到:


Array
(
    [file] => Array
        (
            [name] => 照片文件.jpg
            [type] => image/jpeg
            [tmp_name] => F:\wamp\tmp\php41BB.tmp
            [error] => 0
            [size] => 73886
        )

)

3、全局變量 $_FILES的應用

  $_FILES["file"]["name"]  為上傳文件的原文件名

  $_FILES["file"]["type"]  為上傳文件的 MIME 類型

  $_FILES["file"]["size"]  已上傳文件的大小,單位為字節

  $_FILES["file"]["tmp_name"]  文件被上傳后在服務端儲存的臨時文件名()

  $_FILES["file"]["error"]  文件上傳的錯誤代碼

4、默認情況下,上傳文件會保存在服務端的臨時文件夾中,其目錄在php.ini中設置

php.ini與文件上傳有關的一些常用設置:

file_uploads ;  是否允許通過HTTP上傳文件的開關。默認為ON即是開

upload_tmp_dir ;  文件上傳至服務器上存儲臨時文件的地方,如果沒指定就會用系統默認的臨時文件夾

upload_max_filesize;  即允許上傳文件大小的最大值。默認為2M

post_max_size;  指通過表單POST給PHP的所能接收的最大值,包括表單里的所有值。默認為8M

下面是對單文件上傳的完整代碼,因為是隨想隨寫的,可能邏輯嵌套的有點亂,懂原理最重要。


0){
            //上傳文件錯誤編號判斷
            switch ($fileError) {
                case 1:
                    $message="上傳的文件超過了php.ini 中 upload_max_filesize 選項限制的值。"; 
                    break;
                case 2:
                    $message="上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。"; 
                    break;
                case 3:
                    $message="文件只有部分被上傳。"; 
                    break;
                case 4:
                    $message="沒有文件被上傳。";
                    break;
                case 6:
                    $message="找不到臨時文件夾。"; 
                    break;
                case 7:
                    $message="文件寫入失敗"; 
                    break;
                case 8:
                    $message="由于PHP的擴展程序中斷了文件上傳";
                    break;
            }

            exit("文件上傳失。".$fileError);

        }else{
            if($fileSize>100000){
                //對特定表單的上傳文件限制大小
                exit("上傳文件超出限制大小");
            }else{
                //避免上傳文件的中文名亂碼
                $fileName=iconv("UTF-8", "GBK", $fileName);//把iconv抓取到的字符編碼從utf-8轉為gbk輸出
                if(move_uploaded_file($tempName, "uploads/".$fileName)){
                    echo "上傳文件成功!";
                }else{
                    echo "上傳文件失敗";
                }
            }

        }

    }


?>

5、關于php上傳文件的一些常用函數:(具體用法就不貼出來了,自己看API文檔吧 ^_^)

file_exists  檢查文件或目錄是否存在

is_uploaded_file    判斷文件是否是通過 HTTP POST 上傳的

move_uploaded_file    將上傳的文件移動到新位置

is_writable   判斷給定的文件名是否可寫

iconv  字符編碼互轉

getimagesize  檢查是否為圖片文件(其他類型的文件就算后綴名改了也能被檢測到)

關鍵字:PHP、服務端、原理、數據

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站