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

搜索
博主信息
博文 29
粉絲 1
評論 0
訪問量 30631
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
PHP單條上傳,批量上傳,上傳異常類
阿心
原創(chuàng)
747人瀏覽過

單條文件上傳

  1. <?php
  2. require $_SERVER['DOCUMENT_ROOT'].'/0511/class/upload.class.php';
  3. ?>
  4. <!DOCTYPE html>
  5. <html lang="en">
  6. <head>
  7. <meta charset="UTF-8">
  8. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  9. <title>上傳測試</title>
  10. </head>
  11. <body>
  12. <!-- 上傳提交屬性必須是POST -->
  13. <!-- multipart/form-data,它會將表單的數(shù)據(jù)處理為一條消息,以標簽為單元,用分隔符分開。既可以上傳鍵值對,也可以上傳文件。 -->
  14. <form action="" method='POST' enctype='multipart/form-data'>
  15. <legend>單文件上傳測試變量$_FILES;</legend>
  16. <!-- 隱藏域限制上傳大小 類型file-->
  17. <input type="hidden" name='MAX_FILE_SIZE' value='200000'>
  18. <input type="file" name='pic'>
  19. <button>上傳</button>
  20. </form>
  21. <hr>
  22. <form action="" method='post' enctype="multipart/form-data">
  23. <legend></legend>
  24. </form>
  25. </body>
  26. </html>

單條引入文件upload.class.php

  1. <?php
  2. //使用$_FILES變量來接受數(shù)據(jù)
  3. printf('<pre>%s</pre>',print_r($_FILES,true));
  4. // echo ini_get('upload_max_filesize');
  5. //檢查是否有上傳
  6. $error= $_FILES['pic']['error'];
  7. // echo $error;
  8. //沒有文件的函數(shù) UPLOAD_ERR_NO_FILE;
  9. //檢查文件類型
  10. if($_POST){
  11. if(UPLOAD_ERR_NO_FILE === $error){
  12. echo "沒有上傳文件<br>";
  13. }
  14. $fileType=$_FILES['pic']['type'];
  15. //strstr — 查找字符串的首次出現(xiàn)(stristr忽略大小寫)
  16. //檢查是否為POST提交
  17. $temFile=$_FILES['pic']['tmp_name'];//臨時文件名
  18. $sourceFile=$_FILES['pic']['name'];//源文件名
  19. // echo $temFile.$sourceFile;
  20. //is_uploaded_file — 判斷文件是否是通過 HTTP POST 上傳的
  21. if(stristr($fileType,'/',true) !=='image')
  22. {
  23. echo "$sourceFile 非法請求!";
  24. }elseif(is_uploaded_file($temFile)){
  25. echo "$sourceFile 上傳成功";
  26. }
  27. // ini_get — 獲取一個配置選項的值
  28. //ini_set 臨時更改php.ini上傳大小
  29. //這里限制大小非常有必要,避免通過瀏覽器修改上傳
  30. ini_set('upload_max_filesize','1M');
  31. switch($error){
  32. case 1:
  33. echo '文件大小不符';
  34. break;
  35. case 2:
  36. echo '文件大小不符';
  37. }
  38. }

單條上傳+異常處理

  1. <?php
  2. require 'class/upload.class1.php';
  3. ?>
  4. <!DOCTYPE html>
  5. <html lang="en">
  6. <head>
  7. <meta charset="UTF-8">
  8. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  9. <title>單文件上傳$_FILES</title>
  10. </head>
  11. <body>
  12. <form action="" method='POST' enctype='multipart/form-data'>
  13. <fieldset>
  14. <legend>單文件上傳異常處理</legend>
  15. <input type="hidden" name='MAX_FILE_SIZE' value='200000'>
  16. <input type="file" name='pic'>
  17. <button>上傳</button>
  18. </fieldset>
  19. </form>
  20. </body>
  21. </html>

單條上傳+異常處理類文件upload1.class.php

  1. <?php
  2. //單文件上傳異常類
  3. printf('<pre>%s</pre>',print_r($_FILES,true));
  4. //自定義上傳異常類
  5. class UploadException extends Exception
  6. {
  7. //在異常類中可訪問并重寫Exception中的四個屬性。通過__toString()格式化輸出
  8. public function __toString()
  9. {
  10. return <<< UPLOAD
  11. <style>
  12. table{border-collapse:collapse;border:1px soild #CCC;text-align:center;}
  13. td{border:1px solid #CCC;padding:1px;}
  14. tr:first-of-type{background:#333;}
  15. tr:last-of-type{color:#DDD;}
  16. </style>
  17. <table>
  18. <tr>
  19. <td>代碼</td>
  20. <td>信息</td>
  21. <td>文件</td>
  22. <td>行號</td>
  23. </tr>
  24. <tr>
  25. <td>$this->code</td>
  26. <td>$this->message</td>
  27. <td>$this->file</td>
  28. <td>$this->line</td>
  29. </tr>
  30. </table>
  31. UPLOAD;
  32. }
  33. }
  34. try{
  35. //獲取文件
  36. $errorCode= $_FILES['pic']['error'];
  37. if($errorCode > UPLOAD_ERR_OK)
  38. {
  39. switch ($errorCode)
  40. {
  41. //case視乎不能用數(shù)字表示。
  42. case UPLOAD_ERR_INI_SIZE:
  43. throw new UploadException('文件過大',1);
  44. break;
  45. case UPLOAD_ERR_FORM_SIZE:
  46. throw new UploadException('文件過大');
  47. break;
  48. case UPLOAD_ERR_PARTIAL:
  49. throw new UploadException('文件只有部分上傳了');
  50. break;
  51. case UPLOAD_ERR_NO_FILE:
  52. throw new UploadException('沒有上傳文件',4);
  53. break;
  54. case UPLOAD_ERR_NO_TMP_DIR:
  55. throw new UploadException('找不到臨時文件');
  56. break;
  57. case UPLOAD_ERR_CANT_WRITE:
  58. throw new UploadException('文件寫入失敗');
  59. break;
  60. default:
  61. throw new UploadException('未知錯誤');
  62. }
  63. }
  64. if($_POST){
  65. $fileType=$_FILES['pic']['type'];
  66. if(strstr($fileType,'/', true) !=='image'){
  67. throw new UploadException('文件類型錯誤');
  68. }
  69. $temFile=$_FILES['pic']['tmp_name'];//臨時
  70. // is_uploaded_file — 判斷文件是否是通過 HTTP POST 上傳的
  71. if(is_uploaded_file($temFile)){
  72. // 判斷是否post請求并移動到指定目錄
  73. $sourcFile=$_FILES['pic']['name'];//原文件
  74. //目錄路徑
  75. $FilePath='uploads/'.md5(time().mt_rand(1,99999)).strstr($sourcFile,'.');//。加密獲取擴展名
  76. // echo $FilePath;die;
  77. // move_uploaded_file — 將上傳的文件移動到新位置
  78. if(move_uploaded_file($temFile,$FilePath)){
  79. echo " $sourcFile '上傳成功'";
  80. echo "<img src='{$FilePath}' width='100px'>";
  81. }
  82. }
  83. }
  84. }catch(UploadException $e){
  85. echo $e;
  86. }

批量上傳

  1. <?php
  2. // require 'class/uploads.class.php';
  3. //printf('<pre>%s</pre>',print_r($_FILES,true));
  4. if($_FILES['pic'])
  5. {
  6. foreach($_FILES['pic']['error'] as $key=>$error) {
  7. if($error === UPLOAD_ERR_OK){
  8. $temFile = $_FILES['pic']['tmp_name'][$key];
  9. $sourceFile = $_FILES['pic']['name'][$key];
  10. $PathFile = 'uploads/'.md5(time().mt_rand(1,9999)).strstr($sourceFile,'.');
  11. //移動文件
  12. move_uploaded_file($temFile,$PathFile);
  13. echo "<img src='{$PathFile}' width='100px'> ";
  14. }
  15. }
  16. }
  17. ?>
  18. <!DOCTYPE html>
  19. <html lang="en">
  20. <head>
  21. <meta charset="UTF-8">
  22. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  23. <title>批量上傳圖片</title>
  24. </head>
  25. <body>
  26. <form action="" method="POST" enctype='multipart/form-data'>
  27. <fieldset>
  28. <legend>批量上傳圖片</legend>
  29. <input type="hidden" name='MAX_FILE_SIZE' value='200000'>
  30. <!-- multiple 批量上傳屬性 -->
  31. <input type="file" name="pic[]" multiple>
  32. <button>上傳</button>
  33. </fieldset>
  34. <fieldset>
  35. <legend>單個批量上傳圖片</legend>
  36. <input type="hidden" name='MAX_FILE_SIZE' value='200000'>
  37. <!-- multiple 批量上傳屬性 只是少了一個multiple屬性 -->
  38. <input type="file" name="pic[]" >
  39. <input type="file" name="pic[]" >
  40. <input type="file" name="pic[]" >
  41. <button>上傳</button>
  42. </fieldset>
  43. </form>
  44. </body>
  45. </html>

總結:抄了兩天作業(yè)也沒看懂怎么回事。尤其是批量上傳異常處理更加是摸不著頭腦該怎么弄了。

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

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

老師批語:批量上傳時, 最好將前端的大小驗證去掉, 做后端驗證就可以, 前端可以限制一一下上傳文件的數(shù)量, 這個更實用一些,你說呢?
本博文版權歸博主所有,轉載請注明地址!如有侵權、違法,請聯(lián)系admin@php.cn舉報處理!
全部評論 文明上網(wǎng)理性發(fā)言,請遵守新聞評論服務協(xié)議
0條評論
作者最新博文
關于我們 免責申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓,幫助PHP學習者快速成長!
關注服務號 技術交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學習
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

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

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