<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                form表單提交的文件內容指向了file.php。 我們在file.php中,通過PHP代碼,來處理上傳文件。 我們選擇一個圖片進行上傳。假設圖片的名字為:psu.jpg,點擊上傳。 PHP為文件類數據準備了一個專用的系統函數$_FILES,上傳文件的所有相關數據,都保存在這個系統函數中。 在PHP文件中,我們打印 $_FILES ,來觀察這個數組的結構: ~~~ <?php //var_dump()或print_r() //打印變量的相關信息,將變量的信息詳細的展示出來 var_dump($_FILES); ?> ~~~ 打印出來的結果的數組結構如下: ~~~ array (size=1) 'file' => array (size=5) //文件名 'name' => string 'psu.jpg' (length=7) //文件的mime類型 'type' => string 'image/jpeg' (length=10) //緩存文件,上傳的圖片即保存在這里 'tmp_name' => string 'E:\wamp\tmp\phpC32A.tmp' (length=23) //錯誤碼,詳見上面錯誤碼介紹 'error' => int 0 //上傳的文件大小 'size' => int 225824 ~~~ 得到了上面的數組結構。 我們就可以開始文件的處理過程了。 **第一步,判斷錯誤碼:** ~~~ <?php if($_FILES['file']['error'] > 0){ switch ($_FILES['file']['error']) { //錯誤碼不為0,即文件上傳過程中出現了錯誤 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,即上傳成功,可以進行后續處理,處理流程見下文 } ?> ~~~ 上面的代碼詳細的介紹了錯誤碼和對應的錯誤,我們可以根據錯誤碼,來生成準確的錯誤提示。 **第二步,判斷文件是否超出大小。** 在實際項目中,由于系統硬件的限制,以及存儲設備的限制,不可能讓用戶無限制的上傳文件,所以我們要對用戶上傳的文件大小進行限制。定義一個合適的限制大小,能讓我們的應用更穩定的運行。 ~~~ //判斷錯誤 if($_FILES['file']['error'] > 0){ //有錯誤可停止執行 }else{ //當前上傳文件無誤,運行本段代碼 //判斷文件是否超出了指定的大小 //單位為byte $MAX_FILE_SIZE = 100000; if($_FILES['file']['size'] > $MAX_FILE_SIZE){ //判斷,如果上傳的文件,大小超出了我們給的限制范圍,退上傳并產生錯誤提示 exit("文件超出指定大小"); } ~~~ 將我們指定的文件大小,定義為$MAX_FILE_SIZE,該變量的計數單位為byte,對應上傳文件的 $_FILES['file']['size']大小。 示例代碼中,限制大小約為100K及以下的文件。 **第三步,判斷文件的mime類型是否正確。** 更多的時候,我們的文件上傳功能,都需要判斷用戶上傳的文件,是否符合要求,不可用的文件上傳以后,對于線上應用的整體展示效果,會造成惡劣的影響。所以我們需要通過mime類型和后綴名,來判斷用戶上傳的文件是否符合要求。 下面的示例代碼中,我們假設當前的項目需求為指定上傳圖片,要求上傳后綴名為GIF或者jpg的文件,當用戶上傳不符合要求的文件時,返回錯誤提示。 ~~~ /*判斷后綴名和MIME類型是否符合指定需求 例如: 當前項目指定上傳后綴為.jpg或.gif的圖片,則$allowSuffix = array('jpg','gif'); */ //定義允許的后綴名數組 $myImg = explode('.', $_FILES['file']['name']); /* explode() 將一個字符串用指定的字符切割,并返回一個數組,這里我們將文件名用'.''切割,結果存在$myImg中,文件的后綴名即為數組的最后一個值 */ $myImgSuffix = array_pop($myImg); /* 根據上傳文件名獲取文件的后綴名 使用in_array()函數,判斷上傳文件是否符合要求 當文件后綴名不在我們允許的范圍內時退出上傳并返回錯誤信息 */ if(!in_array($myImgSuffix, $allowSuffix)){ exit("文件后綴名不符"); } /* mime類型和文件后綴名的對應關系,我們可以通過很多途徑查詢到,為了避免用戶自主修改文件后綴名造成文件無法使用。 mime類型也必須做出限制檢查mime類型,是為了防止上傳者直接修改文件后綴名 導致文件不可用或上傳的文件不符合要求。 */ //數組內容為允許上傳的mime類型 $allowMime = array( "image/jpg", "image/jpeg", "image/pjpeg", "image/gif" ); if(!in_array($_FILES['file']['type'], $allowMime)){ //判斷上傳文件的mime類型是否在允許的范圍內 exit('文件格式不正確,請檢查'); //如果不在允許范圍內,退出上傳并返回錯誤信息 } ~~~ **第四步,生成指定的路徑和文件名。** 按照項目的文件安排,生成文件存儲路徑,為了避免文件名重復而產生的錯誤,按照一定的格式,生成一個隨機文件名。 ~~~ //指定上傳文件夾 $path = "upload/images/"; /* 根據當前時間生成隨機文件名,本行代碼是使用當前時間 + 隨機一個0-9的數字組合成文件名,后綴即為前面取到的文件后綴名 */ $name = date('Y').date('m').date("d").date('H').date('i').date('s').rand(0,9).'.'.$myImgSuffix; ~~~ **第五步,判斷是否是上傳文件。** is_uploaded_file()函數是專用的函數,來判斷目標文件是否是上傳文件。 ~~~ <?php //使用is_uploaded_file()判斷是否是上傳文件,函數介紹見上文 if(is_uploaded_file($_FILEs['file']['tmp_name'])){ } ?> ~~~ **第六步,移動文件到指定位置。** 使用move_uploaded_file()函數,將文件移動到指定的位置,并命名。需要注意的是,Linux系統中對目標目錄是否有權限及磁盤空間是否足夠,否則會導致上傳操作失敗。 ~~~ /* 使用move_uploaded_file()移動上傳文件至指定位置,第一個參數為上傳文件,第二個參數為我們在前面指定的上傳路徑和名稱。 */ if(move_uploaded_file($_FILEs['file']['tmp_name'], $path.$name)){ //提示文件上傳成功 echo "上傳成功"; }else{ /* 文件移動失敗,檢查磁盤是否有足夠的空間,或者linux類系統中文件夾是否有足夠的操作權限 */ echo '上傳失敗'; } }else{ echo '不是上傳文件'; } } ?> ~~~ 我們將這個文件片段整理成一整個文件: ~~~ <?php if ($_FILES['file']['error'] > 0) { switch ($_FILES['file']['error']) { //錯誤碼不為0,即文件上傳過程中出現了錯誤 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 '不是上傳文件'; } } ?> ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看