首页 > 开发 > PHP > 正文

PHP入门教程之上传文件实例详解

2024-05-04 22:52:53
字体:
来源:转载
供稿:网友

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