国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

PHP開発基本チュートリアルファイルのアップロード

1. PHP ファイルのアップロード

私たちは日常的に次のような狀況によく遭遇します:

  • QQ スペースに寫真をアップロードする

  • WeChat Moments に寫真をアップロードする

  • メールデータをアップロードするメールに添付ファイル

  • 認証の際、寫真またはIDカードをアップロードする必要があります

  • また、ニーズを分析してさまざまなものをアップロードするためのさまざまな製品gou(ゴウ)もあります。

  • そして私たちは、Wang という製品によって提示されたニーズを?qū)g現(xiàn)する必要があります。

  • ファイルのアップロードの実裝は、PHP プログラマーに必要なスキルの 1 つです。

ファイルアップロードを?qū)Wぶことで、使用現(xiàn)象を通してファイルアップロードの本質(zhì)が見えてきます!


2. ファイルをアップロードするときは、php.ini ファイルに注意する必要があります

この章でアップロードについて正式に説明する前に、最初に行う必要があるのは、php.ini ファイルに注意を払うことです。 iniファイル。

php.ini ファイルの変更方法を初めて紹介します。設(shè)定項目が説明と矛盾している場合は、変更に注意してください。

各設(shè)定項目を理解しましょう。

php.iniを変更する方法を見てみましょう。

phpstudyでphp.ini設(shè)定ファイルを開きます。

52.png

php.ini ファイルが多すぎて見つからない場合は、ctrl+f を使用して関連する構(gòu)成項目を検索できます。


53.png


推奨サイズ: file_size (ファイルサイズ)

また、スクリプトの実行時間にも注意する必要があります。

max_execution_time、このパラメータの単位は秒です。

このパラメータは、スクリプトの最大実行時間を設(shè)定します。
必要に応じて適切な変更を行うこともできます。通常は変更する必要はなく、システムのデフォルト値で十分です。非常に大きなファイルをアップロードする場合、このパラメータが変更される可能性があります。

アップロード時間が長すぎるため、タイムアウトになります。このパラメータを 0 に設(shè)定すると、タイムアウト期間は制限されないため、お勧めできません。

php.ini の関連構(gòu)成が完了したら、最初のファイルのアップロードを完了することを開始できます。


3. ファイルアップロードのステップ

PHPをより良く學(xué)ぶために、非常に複雑なPHPファイルのアップロードを6つのステップにまとめました。

実際の使用では、次の 6 つの手順に従って PHP ファイルのアップロードを正常に完了できます:

1. エラー コードがあるかどうかを確認します

システムによって返されるエラー コードの詳細な説明:


54.png


注: エラーコードには 5

はありません

2.アップロード機能を開発する際に、ファイルサイズが

の範(fàn)囲を超えるかどうかをカスタマイズします。開発者として、php.ini で指定された最大アップロード値に加えて、

通常、企業(yè)が指定したアップロード サイズ制限である値も設(shè)定します。

例:
Sina Weibo または QQ Zone では、2M の単一のアバター寫真のみが許可されます。アルバムをアップロードする場合は、2M を超えてアップロードできます。

そのため、そのシステムはより大きなファイルのアップロードをサポートしています。

ここでの判定ファイルサイズは、実際の業(yè)務(wù)で指定したいアップロードファイルサイズを制限するために使用されます。

3. サフィックス名と MIME タイプが一致するかどうかを確認します

オンラインの世界にも悪い人がいます。畫像にウイルスを挿入したり、添付ファイルにウイルスをアップロードしたり、Web ページにウイルスやポルノ畫像を挿入したりします。

アップロードされたファイルのサフィックスとMIMEタイプを判斷する必要があります。

MIME (MultiPurpose Internet Mail Extensions) は、多目的インターネット メール拡張機能のタイプです。特定の拡張子を持つファイルをアプリケーションで開くように設(shè)定するメソッドの一種で、その拡張子のファイルにアクセスすると、ブラウザは指定されたアプリケーションを使用して自動的にそのファイルを開きます。これは主に、クライアント定義のファイル名とメディア ファイルを開く方法を指定するために使用されます。

サフィックスと MIME タイプを決定するときは、2 つのパラメーターを渡す PHP 関數(shù) in_array() を使用します。
最初のパラメータは判定する値です。
2 番目のパラメータは範(fàn)囲配列です。

この関數(shù)を使用して、ファイル拡張子と MIME タイプが許可された範(fàn)囲內(nèi)であるかどうかを判斷します。

4. ファイル名の生成

ファイルは正常にアップロードされましたが、元の名前は保存されません。
元の名前にデリケートなキーワードが含まれている一部の人々は、我が國の関連法規(guī)制に違反する可能性があるためです。

date()、mt_rand()、または unique() を使用して、ランダムなファイル名を生成できます。

5. アップロードされたファイルかどうかを確認します

ファイルが正常にアップロードされると、システムはアップロードされた一時ファイルをシステムの一時ディレクトリにアップロードします。一時ファイルを作成します。

同時に一時ファイル名も生成されます。必要なのは、一時ファイルをシステム上の指定されたディレクトリに移動することです。

動く前にやみくもに動かない、あるいは間違った動きをするのは非科學(xué)的です。移動する前に、関連する関數(shù)を使用して、アップロードされたファイルが一時ファイルであるかどうかを判斷する必要があります。

is_uploaded_file() はパラメータ ($_FILES のキャッシュ ファイル名) を渡して、渡された名前がアップロードされたファイルかどうかを判斷します

6. 一時ファイルを指定された場所に移動します

一時ファイルは実際のものです一時ファイルを Web サイトのディレクトリに移動する必要があります。

當(dāng)社のウェブサイトディレクトリ內(nèi)のデータに他の人がアクセスできるようにします。

move_uploaded_file() を使用します。
この関數(shù)は、アップロードされたファイルを指定された場所に移動し、名前を付けます。
2 つのパラメータを渡します:
最初のパラメータは、移動を指定するアップロードされたファイルです。
2 番目のパラメータは、指定されたフォルダとその名前を連結(jié)した文字列です


4. ファイルアップロードフォームに関する注意事項

正式な學(xué)習(xí)を開始し、ファイルをアップロードする方法を?qū)Wびます。ファイルをアップロードするには、Webページ上にフォームを用意する必要があります。

これは単純な HTML ページ フォームです。このフォーム フォームは、type=file を入力すると、デフォルトでファイル コンテンツがアップロードされます。

フォームのコードと注意點を見てみましょう

<html>
    <head>
        <meta charset="utf-8" />
        <title>單文件上傳</title>
    </head>
    <body>
        <form action="file.php" method="post" enctype="multipart/form-data">
            <input type="file" name="file">
            <input type="submit" value="上傳">
        </form>
    </body>
</html>

注:

  • フォームform內(nèi)のパラメータメソッドはpostである必要があります。 get の場合、ファイルのアップロードは実行できません。 enctype は multipart/form-data である必要があります。

    フォームによって送信されたファイルの內(nèi)容は file.php を指しています。
  • アップロードされたファイルは、file.php の PHP コードを通じて処理されます。
  • アップロードする名前の付いた寫真を選択します。畫像の名前がhua.jpgであると仮定します。クリックしてアップロードします。

  • PHP はファイルデータ専用のシステム関數(shù) $_FILES を用意しており、アップロードされたファイルの関連データはすべてこのシステム関數(shù)に保存されます。

PHP ファイルで $_FILES を出力して、この配列の構(gòu)造を確認します。

<?php
//var_dump()或print_r()
//打印變量的相關(guān)信息,將變量的信息詳細的展示出來
var_dump($_FILES);             
?>
出力された結(jié)果の配列構(gòu)造は次のとおりです:

上記の配列構(gòu)造が得られます。 ファイル処理プロセスを開始できます。


2. エラー コードを決定します

<?php
if($_FILES['file']['error'] > 0){
    switch ($_FILES['file']['error']) {    //錯誤碼不為0,即文件上傳過程中出現(xiàn)了錯誤
        case '1':
            echo '文件過大';
            break;
        case '2':
            echo '文件超出指定大小';
            break;
        case '3':
            echo '只有部分文件被上傳';
            break;
        case '4':
            echo '文件沒有被上傳';
            break;
        case '6':
            echo '找不到指定文件夾';
            break;
        case '7':
            echo '文件寫入失敗';
            break;
        default:
            echo "上傳出錯<br/>";
    }
}else{
    //錯誤碼為0,即上傳成功,可以進行后續(xù)處理,處理流程見下文
}
?>

上記のコードは、エラー コードとそれに対応するエラーを詳細に示しています。

3. ファイルがサイズを超えているかどうかを確認します

実際のプロジェクトでは、システムのハードウェア制限とストレージデバイスの制限により、ユーザーが無制限にファイルをアップロードすることは不可能であるため、ファイルのサイズを確認する必要がありますユーザーによるアップロードの制限。適切な制限サイズを定義すると、アプリケーションをより安定して実行できます。

//判斷錯誤
if($_FILES['file']['error'] > 0){
        //有錯誤可停止執(zhí)行
}else{
    //當(dāng)前上傳文件無誤,運行本段代碼
 
    //判斷文件是否超出了指定的大小
    //單位為byte
    $MAX_FILE_SIZE = 100000;
    if($_FILES['file']['size'] > $MAX_FILE_SIZE){
    //判斷,如果上傳的文件,大小超出了我們給的限制范圍,退上傳并產(chǎn)生錯誤提示
        exit("文件超出指定大小");                           
    }
55.png $MAX_FILE_SIZE として指定するファイル サイズを定義します。この変數(shù)のカウント単位はバイトであり、アップロードされたファイルの $_FILES['file']['size'] のサイズに対応します。

サンプルコードでは、サイズが約100K以下のファイルが制限されています。

4. ファイルの MIME タイプが正しいかどうかを確認します

オンライン アプリケーションの場合、ファイル アップロード機能は、ユーザーがアップロードしたファイルが要件を満たしているかどうかを確認する必要があることがよくあります。効果が悪影響を及ぼします。したがって、MIME タイプとサフィックス名を使用して、ユーザーがアップロードしたファイルが要件を満たしているかどうかを判斷する必要があります。

以下のサンプルコードでは、現(xiàn)在のプロジェクト要件がアップロードされた畫像を指定し、サフィックスが GIF または jpg のファイルのアップロードを要求していると想定しています。ユーザーが要件を満たさないファイルをアップロードすると、次のようなエラー メッセージが表示されます。戻ってきた。

/*判斷后綴名和MIME類型是否符合指定需求
例如:
當(dāng)前項目指定上傳后綴為.jpg或.gif的圖片,則$allowSuffix = array('jpg','gif');
*/
//定義允許的后綴名數(shù)組
$myImg = explode('.', $_FILES['file']['name']);         
 
/*
explode() 將一個字符串用指定的字符切割,并返回一個數(shù)組,這里我們將文件名用'.''切割,結(jié)果存在$myImg中,文件的后綴名即為數(shù)組的最后一個值
*/
$myImgSuffix = array_pop($myImg);
/*
根據(jù)上傳文件名獲取文件的后綴名
使用in_array()函數(shù),判斷上傳文件是否符合要求
當(dāng)文件后綴名不在我們允許的范圍內(nèi)時退出上傳并返回錯誤信息
*/ 
if(!in_array($myImgSuffix, $allowSuffix)){                             
        exit("文件后綴名不符");
}
/*
mime類型和文件后綴名的對應(yīng)關(guān)系,我們可以通過很多途徑查詢到,為了避免用戶自主修改文件后綴名造成文件無法使用。
mime類型也必須做出限制檢查mime類型,是為了防止上傳者直接修改文件后綴名
導(dǎo)致文件不可用或上傳的文件不符合要求。
*/
//數(shù)組內(nèi)容為允許上傳的mime類型
$allowMime = array(
            "image/jpg",
            "image/jpeg",
            "image/pjpeg",
            "image/gif"
            );
if(!in_array($_FILES['file']['type'], $allowMime)){                      //判斷上傳文件的mime類型是否在允許的范圍內(nèi)
      exit('文件格式不正確,請檢查');
    //如果不在允許范圍內(nèi),退出上傳并返回錯誤信息
}

5. 指定されたパスとファイル名を生成します

プロジェクトのファイル配置に従ってファイルの保存パスを生成します。ファイル名の重複によるエラーを避けるために、特定の形式に従ってランダムなファイル名が生成されます。

//指定上傳文件夾
$path = "upload/images/";
/*
根據(jù)當(dāng)前時間生成隨機文件名,本行代碼是使用當(dāng)前時間 + 隨機一個0-9的數(shù)字組合成文件名,后綴即為前面取到的文件后綴名
*/
$name = date('Y').date('m').date("d").date('H').date('i').date('s').rand(0,9).'.'.$myImgSuffix;

6. ファイルがアップロードされているかどうかを判定する

is_uploaded_file()関數(shù)は、対象のファイルがアップロードされたファイルであるかどうかを判定する専用の関數(shù)です。

<?php
//使用is_uploaded_file()判斷是否是上傳文件,函數(shù)介紹見上文
if(is_uploaded_file($_FILEs['file']['tmp_name'])){    
}
?>

7. ファイルを指定した場所に移動します

move_uploaded_file() 関數(shù)を使用して、ファイルを指定した場所に移動し、名前を付けます。 Linux システムにはターゲット ディレクトリに対するアクセス許可があり、ディスク容量が十分であるかどうかが考慮されることに注意してください。そうでない場合、アップロード操作は失敗します。

/*
使用move_uploaded_file()移動上傳文件至指定位置,第一個參數(shù)為上傳文件,第二個參數(shù)為我們在前面指定的上傳路徑和名稱。
*/
 
if(move_uploaded_file($_FILEs['file']['tmp_name'], $path.$name)){
            //提示文件上傳成功
            echo "上傳成功";                                
        }else{
/*
文件移動失敗,檢查磁盤是否有足夠的空間,或者linux類系統(tǒng)中文件夾是否有足夠的操作權(quán)限
*/
            echo '上傳失敗';                                                
        }
    }else{
        echo '不是上傳文件';
    }
}
?>

完全なコードは次のとおりです:

<?php
if ($_FILES['file']['error'] > 0) {
    switch ($_FILES['file']['error']) {
        //錯誤碼不為0,即文件上傳過程中出現(xiàn)了錯誤
        case '1':
            echo '文件過大';
            break;
        case '2':
            echo '文件超出指定大小';
            break;
        case '3':
            echo '只有部分文件被上傳';
            break;
        case '4':
            echo '文件沒有被上傳';
            break;
        case '6':
            echo '找不到指定文件夾';
            break;
        case '7':
            echo '文件寫入失敗';
            break;
        default:
            echo "上傳出錯<br/>";
    }
} else {

    $MAX_FILE_SIZE = 100000;
    if ($_FILES['file']['size'] > $MAX_FILE_SIZE) {
        exit("文件超出指定大小");

    }

    $allowSuffix = array(
        'jpg',
        'gif',
    );

    $myImg = explode('.', $_FILES['file']['name']);

    $myImgSuffix = array_pop($myImg);

    if (!in_array($myImgSuffix, $allowSuffix)) {
        exit("文件后綴名不符");
    }

    $allowMime = array(
        "image/jpg",
        "image/jpeg",
        "image/pjpeg",
        "image/gif",
    );

    if (!in_array($_FILES['file']['type'], $allowMime)) {
        exit('文件格式不正確,請檢查');
    }

    $path = "upload/images/";
    $name = date('Y') . date('m') . date("d") . date('H') . date('i') . date('s') . rand(0, 9) . '.' . $myImgSuffix;

    if (is_uploaded_file($_FILEs['file']['tmp_name'])) {

        if (move_uploaded_file($_FILEs['file']['tmp_name'], $path . $name)) {
            echo "上傳成功";
        } else {
            echo '上傳失敗';
        }

    } else {
        echo '不是上傳文件';
    }

}
?>

6. 複數(shù)のファイルのアップロード

PHP で単一のファイルをアップロードするプロセスを紹介します。ただし、便宜上、複數(shù)のファイルを同時にアップロードする必要がある場合があります。複數(shù)ファイルのアップロードの原理は同じですが、データを処理する場合、アップロードされたデータを特別に処理する必要があります。

<html>
    <head>
        <meta charset="utf-8" />
        <title>單文件上傳</title>
    </head>
    <body>
        <form action="morefile.php" method="post" enctype="multipart/form-data">
         <input type="file" name="file[]">
         <input type="file" name="file[]">
         <input type="submit" value="上傳">
     </form>
    </body>
</html>

これは簡単なアップロード ページで、フォームは 2 つのファイルを同時に送信します。このページからコンテンツを送信できます。

注:

  • input type="file" name="file[]" 以前と比較して、ファイルの後に余分な角括弧が追加されています

  • 2 つ以上の入力タイプを記述します =" file" name="file[]"
    $_FILES を使用してファイル情報を受け取り、配列を印刷および表示します:

<?php
var_dump($_FILES); //打印$_FILES查看數(shù)組結(jié)構(gòu)
?>

配列構(gòu)造は右側(cè)に表示されます

2 つのファイルが保存されていることがわかります配列の場合、キー名はアップロードされた単一ファイルと同じです。したがって、for() ループを使用して、2 つのファイルからそれぞれ必要なデータを取得する必要があります。

2 つのファイルのデータが $_FILES に同時に保存されます。単純なループを使用して、1 つのファイルの情報を読み取り、ファイルを配置したい場所に移動する必要があります。

for ($i=0; $i < count($_FILE['file']['name']); $i++) {  
/*
用is_uploaded_file()函數(shù)判斷是上傳文件
并且沒有出現(xiàn)錯
*/
    if(is_uploaded_file($_FILEs['file']['tmp_name'][$i]) && $_FILEs['file']['error'][$i] == 0){     
        if(move_uploaded_file($_FILEs['file']['tmp_name'][$i],'upload/'.$_FILE['file']['name'][$i])){
    //用move_uploaded_file()函數(shù)移動文件到指定的位置并使用文件原名
    echo "上傳成功";
        }else{
            echo '上傳失敗';
        }
    }else{
       echo '上傳失敗';
    }
}

詳細な判定プロセスについては、単一ファイルのアップロードを參照してください。ここでは基本的な判定のみが行われ、ファイル サイズや形式についての注意事項はありません。
ファイルサイズや形式は業(yè)務(wù)に応じてご自身で判斷し、エラー通知を提供してください。


7. ファイルアップロードの進行処理

ファイルが大きすぎる場合、またはユーザーのネットワーク狀態(tài)が平均的な場合、この時點でユーザーが空白の畫面で待機している場合、通常、アップロードプロセスに時間がかかります。 , ほとんどのユーザーはアプリケーションを直接削除する必要があると思います。そのため、アップロードの進行狀況を監(jiān)視し、リアルタイムでユーザーに報告する必要性は、Wang という製品によって考慮されます。高品質(zhì)のアップロード進行狀況プロンプトにより、アプリケーションはすぐに注目されるようになります。
PHP 5.4 より前は、ファイルのアップロードの進行狀況を監(jiān)視するために、常に追加の拡張機能をインストールする必要がありました。 5.4 からは、session.upload_progress の新機能が導(dǎo)入されています。セッションを通じてファイルのアップロードの進行狀況を監(jiān)視するには、php.ini の設(shè)定を有効にするだけです。 php.ini內(nèi)。

注: この章を?qū)W習(xí)するには、セッション、JavaScript、および Ajax の基本的な知識が必要です。

php.ini ファイルを設(shè)定し、チェックして変更するように注意する必要があります。

56.png

設(shè)定を有効にすると、セッションを通じて完全なファイル アップロードの進行狀況を記録できます。セッションでは、次の結(jié)果を含む配列が表示されます:

 $_SESSION["upload_progress_test"] = array(
    //請求時間
     "start_time" => 1234567890,
     // 上傳文件總大小
     "content_length" => 57343257,
     //已經(jīng)處理的大小
     "bytes_processed" => 453489,
     //當(dāng)所有上傳處理完成后為TRUE,未完成為false
     "done" => false,
 
     "files" => array(
      0 => array(
        //表單中上傳框的名字
 
       "field_name" => "file1",
 
       //上傳文件的名稱
       "name" => "test1.avi",
 
       //緩存文件,上傳的文件即保存在這里
       "tmp_name" => "/tmp/phpxxxxxx",
 
       //文件上傳的錯誤信息
       "error" => 0,
 
       //是否上傳完成,當(dāng)這個文件處理完成后會變成TRUE
       "done" => true,
 
       //這個文件開始處理時間
       "start_time" => 1234567890,
 
       //這個文件已經(jīng)處理的大小
       "bytes_processed" => 57343250,     
      ),
 
      1 => array(
       "field_name" => "file2",
       "name" => "test2.avi",
       "tmp_name" => NULL,
       "error" => 0,
       "done" => false,                    
       "start_time" => 1234567899,
       "bytes_processed" => 54554,
      ),
     )
    );

この配列は、ファイルのアップロードの進行狀況を詳細に記録し、処理されたファイルのステータスは true です。次に、jQuery AJAX の例を使用して、ファイルのアップロードの進行プロセスを?qū)W習(xí)します。

まず、フォームに type=hidden の input タグを追加する必要があります。タグの値はカスタマイズされます (この値はバックグラウンドで使用されるため、意味のある値を使用することをお勧めします)

<form id="upload-form" action="upload.php" method="POST" enctype="multipart/form-data" style="margin:15px 0" target="hidden_iframe">
    <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="test" />
    <p><input type="file" name="file1" /></p>
    <p><input type="submit" value="Upload" /></p>
</form>
<div id="progress" style="margin-bottom:15px;display:none;">
    <div>0%</div>
</div>

こちら、ID が追加されます。これは、アップロードの進行狀況を表示するコンテナとして使用される進行狀況 div です。 js の setTimeout() を使用して ajax を定期的に実行し、ファイルのアップロードの進行狀況を取得します。バックグラウンド ファイルはファイル アップロードの進行狀況のパーセンテージを返します。

<script src="../jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
function fetch_progress(){
    $.get('progress.php',{ '<?php echo ini_get("session.upload_progress.name"); ?>' : 'test'}, function(data){
        var progress = parseInt(data);
        $('#progress .label').html(progress + '%');
        if(progress < 100){
            setTimeout('fetch_progress()', 100);    //當(dāng)上傳進度小于100%時,顯示上傳百分比
        }else{
            $('#progress .label').html('完成!'); //當(dāng)上傳進度等于100%時,顯示上傳完成
        }
    }, 'html');
}
 
$('#upload-form').submit(function(){
    $('#progress').show();
    setTimeout('fetch_progress()', 100);//每0.1秒執(zhí)行一次fetch_progress(),查詢文件上傳進度
});
</script>

上記のコードは、JQ の ajax を使用して、ファイルのアップロードの進行狀況を 0.1 秒ごとに返します。そして、divタグに進捗率を表示します。

バックグラウンド コードは 2 つの部分に分割する必要があります。upload.php はファイルのアップロードを処理します。 progress.php はセッション內(nèi)のアップロードの進行狀況を取得し、進行狀況のパーセンテージを返します。

ここではファイルのアップロードについては詳しく説明しません。詳細な手順については、上記を參照してください。upload.php:

<?php
if(is_uploaded_file($_FILES['file1']['tmp_name'])){                                            //判斷是否是上傳文件
    //unlink($_FILES['file1']['tmp_name']);    
    move_uploaded_file($_FILES['file1']['tmp_name'], "./{$_FILES['file1']['name']}");     //將緩存文件移動到指定位置
}
?>
主要關(guān)注progress.php:
<?php
/*
開啟session。請注意在session_start()之前,請不要有想瀏覽器輸出內(nèi)容的動作,否則可能引起錯誤。
*/
 
session_start();
 
//ini_get()獲取php.ini中環(huán)境變量的值
$i = ini_get('session.upload_progress.name');
 
//ajax中我們使用的是get方法,變量名稱為ini文件中定義的前綴 拼接 傳過來的參數(shù)
$key = ini_get("session.upload_progress.prefix") . $_GET[$i];    
//判斷 SESSION 中是否有上傳文件的信息
if (!empty($_SESSION[$key])) {                                        
    //已上傳大小
    $current = $_SESSION[$key]["bytes_processed"];
    //文件總大小
    $total = $_SESSION[$key]["content_length"];
 
    //向 ajax 返回當(dāng)前的上傳進度百分比。
    echo $current < $total ? ceil($current / $total * 100) : 100;
}else{
    echo 100;                                                       
}
?>

この時點で、フロントエンドでファイルの進行コードが完成しました。クールなファイルアップロード機能を作成してください。

學(xué)習(xí)體験: ファイルアップロードの 6 つのステップを覚えてください


學(xué)び続ける
||
<?php if ($_FILES['file']['error'] > 0) { switch ($_FILES['file']['error']) { //錯誤碼不為0,即文件上傳過程中出現(xiàn)了錯誤 case '1': echo '文件過大'; break; case '2': echo '文件超出指定大小'; break; case '3': echo '只有部分文件被上傳'; break; case '4': echo '文件沒有被上傳'; break; case '6': echo '找不到指定文件夾'; break; case '7': echo '文件寫入失敗'; break; default: echo "上傳出錯<br/>"; } } else { $MAX_FILE_SIZE = 100000; if ($_FILES['file']['size'] > $MAX_FILE_SIZE) { exit("文件超出指定大小"); } $allowSuffix = array( 'jpg', 'gif', ); $myImg = explode('.', $_FILES['file']['name']); $myImgSuffix = array_pop($myImg); if (!in_array($myImgSuffix, $allowSuffix)) { exit("文件后綴名不符"); } $allowMime = array( "image/jpg", "image/jpeg", "image/pjpeg", "image/gif", ); if (!in_array($_FILES['file']['type'], $allowMime)) { exit('文件格式不正確,請檢查'); } $path = "upload/images/"; $name = date('Y') . date('m') . date("d") . date('H') . date('i') . date('s') . rand(0, 9) . '.' . $myImgSuffix; if (is_uploaded_file($_FILEs['file']['tmp_name'])) { if (move_uploaded_file($_FILEs['file']['tmp_name'], $path . $name)) { echo "上傳成功"; } else { echo '上傳失敗'; } } else { echo '不是上傳文件'; } } ?>