日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP实现多文件上传

發布時間:2025/3/15 php 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP实现多文件上传 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PHP文件上傳流程

  • 單擊提交按鈕,瀏覽器用戶將包含上傳文件的表單數據提交給PHP處理程序
  • Web服務器和PHP預處理器首先判斷表單數據的大小是否超過php.ini配置文件中的post_max_size選項設置的上限值。
    若超過,PHP處理程序將無法得到任何表單數據,此時不僅上傳文件失敗,而且表單控件中填寫的數據也會提交失敗,也就是說:PHP處理程序預定義變量$_GET、$_POST、$_FILES將為空數組。
    若沒有超過,文件上傳進入第3步檢驗。
  • 檢驗表單中的文件大小是否超過表單隱藏域MAX_FILE_SIZE設置的上限值。
    若超過,PHP預處理器返回狀態碼2,文件上傳失敗。
    若沒有超過,文件上傳進入第4步檢驗。
    (當有多個文件進行上傳時,某個文件上傳框導致的文件上傳失敗,不會影響其他文件上傳框的上傳結果)
  • 檢驗表單中的文件是否超過php.ini配置文件中upload_max_filesize選項設置的上限值。
    若超過,PHP預處理器返回狀態碼1,文件上傳失敗。
    若沒有超過,文件上傳進入第5步檢驗。
  • PHP實現上傳文件需要在php.ini配置文件upload_tmp_dir選項定義的目錄中創建一個與上傳文件一一對應的臨時文件(默認拓展名為tmp),上傳成功后,臨時文件立即消失,此時PHP預處理器的返回狀態碼0。
    但是有時由于某些原因(如max_execution_time選項設置過小或者網速慢等原因),上傳部分文件后不再繼續上傳剩余文件,導致文件上傳失敗,此時PHP預處理器返回狀態碼3
    若通過,文件上傳進入第6步檢驗。
  • 實現文件上傳的關鍵一步在于在臨時文件消失前,需要將臨時文件保存到Web服務器或文件服務器。PHP提供的兩個函數:is_uploaded_file() 函數和 move_uploaded_file() 函數,可以幫助完成這一步的工作

  • 多個文件上傳要注意的就是相同的name保存的文件內容是按照下面的形式放在數組中的。是五個數組,按照文件的五個參數分別存放的,并非三個數組。所以如果直接使用count($_FILES[’$myPicture’]),答案為5。

    array (size=5)'name' => array (size=3)0 => string '1.txt' (length=5)1 => string '2.txt' (length=5)2 => string '3.txt' (length=5)'type' => array (size=3)0 => string 'text/plain' (length=10)1 => string 'text/plain' (length=10)2 => string 'text/plain' (length=10)'tmp_name' => array (size=3)0 => string 'D:\wamp64\tmp\phpC5E8.tmp' (length=25)1 => string 'D:\wamp64\tmp\phpC5E9.tmp' (length=25)2 => string 'D:\wamp64\tmp\phpC5EA.tmp' (length=25)'error' => array (size=3)0 => int 01 => int 02 => int 0'size' => array (size=3)0 => int 01 => int 02 => int 0

    index.php文件

    <form action="fileSystem.php" method="post" enctype="multipart/form-data"><input type="hidden" name="MAX_FILE_SIZE" value="100000" /><input type="file" name="myPicture[]" size= "25" maxlength="100"><br><input type="file" name="myPicture[]" size= "25" maxlength="100"><br><input type="file" name="myPicture[]" size= "25" maxlength="100"><br><input type="submit" value="提交"> </form>

    fileSystem文件

    <?phpif (empty($_POST)) {exit("提交的表單數據超過post_max_size的配置");}$arr = $_FILES['myPicture'];$file =array();for ($i=0; $i < count($arr['name']); $i++) { $file[$i]['name'] = $arr['name'][$i];$file[$i]['type'] = $arr['type'][$i];$file[$i]['tmp_name'] = $arr['tmp_name'][$i];$file[$i]['error'] = $arr['error'][$i];$file[$i]['size'] = $arr['size'][$i];}for ($i=0; $i < count($file); $i++) { switch ($file[$i]['error']) {case 0: $fileName = $file[$i]['name'];$fileTemp = $file[$i]['tmp_name'];$destination = "uploads/" . $file[$i]['name'];move_uploaded_file($fileTemp, $destination);echo "上傳成功";break;case 1:echo "上傳附件超過php.ini中的upload_max_filesize選項的限制";break;case 2:echo "上傳附件的大小超過了form表單MAX_FILE_SIZE選項指定的值";break;case 3:echo "附件只有部分被上傳";break;case 4:echo "沒有選擇上傳附件";break;} } ?>

    總結

    以上是生活随笔為你收集整理的PHP实现多文件上传的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。