博客列表 >php编写文件上传与检测_2018年8月28日

php编写文件上传与检测_2018年8月28日

PHP学习
PHP学习原创
2018年09月11日 21:21:37765浏览

实例

<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="542488">
    <FIELDSET>
        <LEGEND>文件上传</LEGEND>
        <p><span>选择文件</span><input type="file" name="upload"></p>
    </FIELDSET>
    <p style="text-align: center"><button type="submit" name="submit">上传</button></p>
</form>

<?php
//系统变量$_FILES是一个二维数组,里面有很多我们要用到。文件上传控件,就是name属性。常用的属性有以下几个:
/*
$_FILES['file']['name'];//文件名
$_FILES['file']['size'];//文件大小
$_FILES['fiel']['type'];//文件属性
$_FILES['fiel']['tmp_name];//文件临时路径
$_FILES['fiel']['error'];//文件错误代码
*/
//在表单中,action里面可以填三种。
//第一种就是直接留空,也就是在当前文件中执行PHP代码。
//第二种就是直接写上当前文件名,就是在该文件路径中执行。
//第三种,也是最安全,起使用最好的就去。就是用$_SERVER['PHP_SELF'].在实际工作中要用htmlspecialchars()设置以免跨区域攻击。
if ($_SERVER['REQUEST_METHOD'] == 'POST') {//检查上传方法是不是POST上传
  if (isset($_FILES['upload']))  {//检查是否有文件上传
      $allow = ['image/jpg','image/gif','image/png'];//检查上传文件的格式
      if (in_array($_FILES['upload']['type'],$allow)) {//判断上传文件的格式是不是allow里面的文件格式
          //将文件上传移动到临时的目录下面
          if (move_uploaded_file($_FILES['type']['tmp_name'],"upload/{$_FILES['upload']['name']}")) {
              echo '文件上传成功';
          }
      }else {
          echo '文件格式不对,只允许上传JPG/GIF/PNG格式文件';
      }
  }
  //进行上传错误,代码来判断上传的错误信息
  if ($_FILES['upload']['error'] > 0) {
      echo '错误的原因是:';
      switch ($_FILES['upload']['error']) {
          case 1:
              echo '文件超过了php.ini配置中设置的大小';
              break;
          case 2:
              echo '文件超过了表单中常量设置的大小';
              break;
          case 3:
              echo '仅有部分文件被上传';
              break;
          case 4:
              echo '没有文件被上传';
              break;
          case 6:
              echo '没有可用的临时文件夹';
              break;
          case 7:
              echo '磁盘已满,写入失败';
              break;
          case 8:
              echo '上传意外中止';
              break;

          default:
              echo '系统未知错误';
              break;
      }
      //将临时文件删除,这是为了保险起见
      if (file_exists($_FILES['upload']['tmp_name']) && is_file($_FILES['upload']['tmp_name'])) {
          unlink($_FILES['upload']['tmp_name']);
      }
  }
} else {
    echo '1';
}
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

总结:老师请帮忙看一下,我有几个地方还是不很明白,第一个就是

/将文件上传移动到临时的目录下面
          if (move_uploaded_file($_FILES['type']['tmp_name'],"upload/{$_FILES['upload']['name']}")) {
              echo '文件上传成功';

这短不是很明白,move_uploaded_file是个函数,就是将文件上传到upolad这个目录 下面吗,如果没有upload这个目录,系统会自己创建,对吗?

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议