PHP入門教學之上傳檔案實例分享

墨辰丷
發布: 2023-03-29 06:38:02
原創
1252 人瀏覽過

這篇文章主要介紹了PHP入門教程之上傳文件的方法,結合實例形式詳細分析了php上傳文件的步驟與相關實現技巧,需要的朋友可以參考下

Demo1.php

<form enctype="multipart/form-data" action="Demo2.php" method="post">
  <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
  上传文件: <input type="file" name="userfile" />
  <input type="submit" value="上传" />
</form>
登入後複製

Demo2.php

#
<?php
  //接受上传文件
  //$_FILES;
  //存在,但是空值
  //[userfile][name] 表示上传的文件名
  //[userfile][type] 表示文件类型:例如,jpg 的文件类型为:image/jpeg
  //[userfile][tmp_name]表示上传的文件临时存放的位置 C:\WINDOWS\temp\php28.tmp
  //[userfile][error]表示错误类型,表示没有任何错误。
  //[userfile][size]表示上传文件的大小
  print_r($_FILES);
  echo &#39;<br/>&#39;;
  //is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的
  //通过 HTTP POST 上传后,文件会存放在临时文件夹下
  $fileMimes = array(&#39;image/jpeg&#39;,&#39;image/pjpeg&#39;,&#39;image/gif&#39;,&#39;image/png&#39;,&#39;image/x-png&#39;);
  //判断类型是否是数组里的一种
  if(is_array($fileMimes)){
    if(!in_array($_FILES[&#39;userfile&#39;][&#39;type&#39;],$fileMimes)){
      echo "<script>alert(&#39;本站只允许 jpg,png,gif 图片&#39;);history.back();</script>";
      exit;
    }
  }
  //创建一个常量
  define(&#39;URL&#39;,dirname(__FILE__).&#39;\uploads&#39;);
  echo URL;
  //判断目录是否存在
  if(!is_dir(URL)){
    mkdir(URL,0777); //最大权限0777,意思是如果没有这个目录,那么就创建
  }
  define(&#39;MAX_SIZE&#39;,2000000);
  if($_FILES[&#39;userfile&#39;][&#39;size&#39;] > MAX_SIZE){
    echo "<script>alert(&#39;上传不得超过 2 M&#39;);history.back();</script>";
    exit;
  }
  //还有两个问题要验证
  //第二个问题,只允许 JPG 文件
// if($_FILES[&#39;userfile&#39;][&#39;type&#39;] != &#39;image/jpeg&#39; && $_FILES[&#39;userfile&#39;][&#39;type&#39;] != &#39;image/pjpeg&#39;){
//   echo "<script>alert(&#39;本站只允许 JPG 图片&#39;);history.back();</script>";
//   exit ;
// }
// switch ($_FILES[&#39;userfile&#39;][&#39;type&#39;]){
//   case &#39;image/jpeg&#39;://火狐
//     break;
//   case &#39;image/pjpeg&#39;:
//     break;
//   case &#39;image/gif&#39;:
//     break;
//   case &#39;image/png&#39;://火狐
//     break;
//   case &#39;image/x-png&#39;://IE
//     break;
//   default: echo "<script>alert(&#39;本站只允许 jpg,png,gif 图片&#39;);history.back();</script>";
//   exit ;
// }
  //第一个问题,如果上传错误,怎么办
  if($_FILES[&#39;userfile&#39;][&#39;error&#39;]>0){
    switch ($_FILES[&#39;userfile&#39;][&#39;error&#39;]){
      case 1:echo "<script>alert(&#39;上传文件超过约定值1&#39;);history.back();</script>";
      break;
      case 2:echo "<script>alert(&#39;上传文件超过约定值2&#39;);history.back();</script>";
      break;
      case 3:echo "<script>alert(&#39;部分被上传&#39;);history.back();</script>";
      break;
      case 4:echo "<script>alert(&#39;没有被上传&#39;);history.back();</script>";
      break;
    }
    exit;
  }
  if(is_uploaded_file($_FILES[&#39;userfile&#39;][&#39;tmp_name&#39;])){
    //就在这里移动了
    //move_uploaded_file -- 将上传的文件移动到新位置
    //第一个参数,写上临时文件的地址,
    //第二个参数,第二个参数要写上你要存在的地址
    //先去判断这个目录是否存在
    //如果想屏蔽掉警告,直接加上 @
    if(!move_uploaded_file($_FILES[&#39;userfile&#39;][&#39;tmp_name&#39;],URL.&#39;/&#39;.$_FILES[&#39;userfile&#39;][&#39;name&#39;])){
      //如果移动失败,就失败
      echo &#39;移动失败&#39;;
      exit;
    }
  }else{
    echo "<script>alert(&#39;临时文件夹找不到上传的文件&#39;);history.back();</script>";
    exit;
  }
  //全部通过就上传成功了
  //必须传一个值给Demo3.php
  //文件上传的地址
  echo "<script>alert(&#39;文件上传成功&#39;);location.href=&#39;Demo3.php?url=".$_FILES[&#39;userfile&#39;][&#39;name&#39;]."&#39;;</script>";
?>
登入後複製

Demo3.php




##

<?php
  $url = $_GET[&#39;url&#39;];
  echo "<img src=\"uploads/".$url."\"/>";
?>
登入後複製

總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。

相關推薦:############php###解決DOM亂碼的方法#################php# ## PDO異常處理的方法詳解##################php###.ini中date.timezone設定簡單介紹########### #################

以上是PHP入門教學之上傳檔案實例分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!