亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 98
粉絲 1
評論 0
訪問量 82809
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
文件上傳學(xué)習(xí)
阿杰
原創(chuàng)
827人瀏覽過

單文件上傳

  1. 表單上傳
    1. <form action="" method="post" enctype="multipart/form-data">
    2. <fieldset>
    3. <legend>單文件上傳</legend>
    4. <!-- 前端設(shè)置上傳文件的大?。鹤止?jié) -->
    5. <!-- <input type="hidden" name="MAX_FILE_SIZE" value="5600"> -->
    6. <input type="file" name="my_pic" id="">
    7. <button>上傳</button>
    8. </fieldset>
    9. </form>
  2. 查看上傳信息
    1. // $_FILES: 文件上傳變量,超全局的變量數(shù)組, 保存著所有與文件上傳的相關(guān)信息
    2. printf('<pre>%s</pre>', print_r($_FILES, true));

自定義異常類

  1. 自定義文件上傳的異常類
    1. // 自定義文件上傳的異類處理類
    2. class UploadException extends Exception
    3. {
    4. public function __toString()
    5. {
    6. return <<<UPLOAD
    7. <table>
    8. <tr>
    9. <td>編號</td>
    10. <td>信息</td>
    11. <td>文件</td>
    12. <td>行號</td>
    13. </tr>
    14. <tr>
    15. <td>$this->code</td>
    16. <td>$this->message</td>
    17. <td>$this->file</td>
    18. <td>$this->line</td>
    19. </tr>
    20. </table>
    21. <style>
    22. table {border-collapse: collapse;border:1px solid black;text-align: center;}
    23. td {border:1px solid black;padding: 5px;}
    24. tr:first-of-type {background-color:#eee;}
    25. tr:last-of-type td {color: red;}
    26. </style>
    27. UPLOAD;
    28. }
    29. }
  2. 調(diào)用異常類

    1. try
    2. {
    3. // 1.對錯誤代碼的判斷
    4. $errorCode = $_FILES['my_pic']['error'] ?? null;
    5. // 使用系統(tǒng)常量進(jìn)行判斷
    6. if($errorCode>UPLOAD_ERR_OK){
    7. switch ($errorCode){
    8. case UPLOAD_ERR_INI_SIZE:
    9. throw new UploadException('上傳的文件超過了php.ini 中 upload_max_filesize 選項限制的值',1);
    10. break;
    11. case UPLOAD_ERR_FORM_SIZE:
    12. throw new UploadException('上傳的文件超出了表單中設(shè)置的大小',2);
    13. break;
    14. case UPLOAD_ERR_PARTIAL:
    15. throw new UploadException('文件只有部分被上傳', 3);
    16. break;
    17. case UPLOAD_ERR_NO_FILE:
    18. throw new UploadException('沒有文件被上傳', 4);
    19. break;
    20. case UPLOAD_ERR_NO_TMP_DIR:
    21. throw new UploadException('找不到臨時文件夾', 5);
    22. break;
    23. case UPLOAD_ERR_CANT_WRITE:
    24. throw new UploadException('文件寫入失敗', 6);
    25. break;
    26. default:
    27. // 測試時建議關(guān)掉default: 避免誤報影響
    28. throw new UploadException('未知類型錯誤', 7);
    29. }
    30. }
    31. // 2.判斷文件類型是否正確
    32. $fileType = $_FILES['my_pic']['type'] ?? null;
    33. $type = strstr($fileType,'/',true);
    34. if(!is_null($fileType)){
    35. if($type!=='image') throw new UploadException('上傳類型錯誤',8);
    36. }
    37. }catch(UploadException $e){
    38. echo $e;
    39. }



  3. 單文件(圖片上傳)
  • 先準(zhǔn)備一個存放上傳文件的文件

  • 把臨時文件上傳到目標(biāo)目錄
  1. // 判斷上傳方式是否正確?
  2. // 臨時文件名
  3. $tmplFileName = $_FILES['my_pic']['tmp_name'] ?? null;
  4. // 1. 首先臨時文件是存在的,并且必須是通過POST上傳的
  5. if ($tmplFileName && is_uploaded_file($tmplFileName)) {
  6. // 2. 將文件從臨時目錄移動到目標(biāo)目錄中: uploads/
  7. // move_uploaded_file(臨時文件, 目標(biāo)文件名)
  8. // 原始文件名
  9. $originalFileName = $_FILES['my_pic']['name'] ?? null;
  10. echo strstr($originalFileName, '.');
  11. // 目標(biāo)文件名
  12. $destFileName = 'uploads/' . md5(time(). mt_rand(1,1000)) .strstr($originalFileName, '.');
  13. if (move_uploaded_file($tmplFileName, $destFileName)) {
  14. echo '<p>'. $_FILES['my_pic']['name'].': 上傳成功</p>';
  15. // 預(yù)覽圖片
  16. echo "<img src='{$destFileName}' width='200'>";
  17. }
  18. }


多文件上傳

  1. 文件批量上傳中缺失的異常處理, 文件類型處理等操作

    1. <form action="" method="post" enctype="multipart/form-data">
    2. <fieldset>
    3. <legend>批量上傳文件</legend>
    4. <input type="file" name="my_pic1" id="">
    5. <input type="file" name="my_pic2" id="">
    6. <input type="file" name="my_pic3" id="">
    7. <button>上傳</button>
    8. </fieldset>
    9. </form>
    1. foreach ($_FILES as $k=>$file) {
    2. // echo $k;
    3. try
    4. {
    5. // 1.對錯誤代碼的判斷
    6. $errorCode = $_FILES[$k]['error'] ?? null;
    7. // 使用系統(tǒng)常量進(jìn)行判斷
    8. if($errorCode>UPLOAD_ERR_OK){
    9. switch ($errorCode){
    10. case UPLOAD_ERR_INI_SIZE:
    11. throw new UploadException('上傳的文件超過了php.ini 中 upload_max_filesize 選項限制的值',1);
    12. break;
    13. case UPLOAD_ERR_FORM_SIZE:
    14. throw new UploadException('上傳的文件超出了表單中設(shè)置的大小',2);
    15. break;
    16. case UPLOAD_ERR_PARTIAL:
    17. throw new UploadException('文件只有部分被上傳', 3);
    18. break;
    19. case UPLOAD_ERR_NO_FILE:
    20. throw new UploadException('沒有文件被上傳', 4);
    21. break;
    22. case UPLOAD_ERR_NO_TMP_DIR:
    23. throw new UploadException('找不到臨時文件夾', 5);
    24. break;
    25. case UPLOAD_ERR_CANT_WRITE:
    26. throw new UploadException('文件寫入失敗', 6);
    27. break;
    28. default:
    29. // 測試時建議關(guān)掉default: 避免誤報影響
    30. throw new UploadException('未知類型錯誤', 7);
    31. }
    32. }
    33. // 2.判斷文件類型是否正確
    34. $fileType = $_FILES[$k]['type'] ?? null;
    35. $type = strstr($fileType,'/',true);
    36. if(!is_null($fileType)){
    37. if($type!=='image') throw new UploadException('上傳類型錯誤',8);
    38. }
    39. }catch(UploadException $e){
    40. echo $e;
    41. }
    42. }

  2. 文件批量上傳
    1. if($file['error']===0){
    2. $destFileName = 'uploads/' . md5(time().mt_rand(1,1000)) . strstr($file['name'],'.');
    3. if(move_uploaded_file($file['tmp_name'],$destFileName)){
    4. echo $file['name'].':上傳成功!'.'<hr>';
    5. // 預(yù)覽圖片
    6. echo "<img src='{$destFileName}' width='200'>";
    7. }
    8. }

*封裝一個文件上傳類,可同時處理單文件與多文件上傳(還在進(jìn)一步學(xué)習(xí))

批改老師:天蓬老師天蓬老師

批改狀態(tài):合格

老師批語:寫得棒棒
本博文版權(quán)歸博主所有,轉(zhuǎn)載請注明地址!如有侵權(quán)、違法,請聯(lián)系admin@php.cn舉報處理!
全部評論 文明上網(wǎng)理性發(fā)言,請遵守新聞評論服務(wù)協(xié)議
0條評論
作者最新博文
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費學(xué)