• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php文件上传原理与实现方法详解

    本文实例讲述了php文件上传原理与实现方法。分享给大家供大家参考,具体如下:

    文件上传实际上就是在前段使用一个form表单提交本地文件到服务器,然后在服务器端将文件从临时目录转移到指定目录的过程。

    1、php配置文件

    php.ini文件中的file uploads部分定义了相关文件上传配置,

    2、前端表单

      form action="test.php" method="post" enctype="multipart/form-data">
        input type="file" name="myfile">
        input type="submit" value="上传">
      /form>
    
    

    当使用由文件上传控件的表单时,必须将form的enctype设置为"multipart/form-data"。

    可以在客户端对上传文件的大小与类型进行限制:

    input type="hidden" name="MAX_FILE_SIZE" value="8096">
    input type="file" name="myfile" accept="image/jpeg,image/png">

    3、后台处理

    上传后会在服务器端得到一个$_FILES文件数组如下:

    上传到服务器的临时文件默认保存在php.ini中upload_tmp_dir所设置的目录下,我们需要将文件移动到指定位置:

    ?php
      header('Content-type:text/html;charset=utf-8');
      $myfile=$_FILES['myfile'];
      //获取文件数组['myfile']的属性tmp_name与name
      $tmp=$myfile['tmp_name'];
      $picname=$myfile['name'];
      //windows采用GBK编码,php采用utf-8编码,需要改变文件名的编码格式
      $picname=iconv('utf-8','GBK',$picname);
      //将零时文件$tmp移动到指定目录userpic并命名为$picname
      copy($tmp,"userpic/".$picname);
    
    

    file_uploads=On 开启HTTP上传
    upload_tmp_dir 临时文件保存目录
    upload_max_filesize=2M 最大上传文件大小
    post_max_size=8M POST方式传输最大数据值
    max_file_uploads 一次上传最大文件数
    memory_limit=128M 单线程最大内存占用量
    max_excution_time=-1 脚本解析所允许的最大执行时间(s),默认为-1未开启

    4、错误处理

    对file数组中的error属性进行判断处理:

    $error=$myfile['myfile']['error'];
      if ($error==0){//为0,代表上传成功
        if (move_uploaded_file($tmp,"userpic/".$picname)) {
          echo "移动文件成功";
        }else{
          echo "移动文件失败";
        }
      }else{//不为0,匹配错误信息
        switch ($error){
          case 1:
            echo "超过文件最大上传限制";//php.ini中upload_max_filesize
            break;
          case 2:
            echo "超过表单文件大小限制";//HTML表单中MAX_FILE_SIZE选项
            break;
          case 3:
            echo "文件部分被上传";
            break;
          case 4:
            echo "未选择上传文件";
            break;
          case 7://文件写入失败
          case 8:
            echo "系统错误";
            break;
        }
      }
    
    

    5、上传限制

    在前端可以对上传的文件类型,大小进行限制:

    !--表单隐藏域对上传大小进行限制-->
    input type="hidden" name="MAX_FILE_SIZE" value="2097152">
    !--accept 对文件类型限制-->
    input type="file" name="myfile" accept="image/jpeg,image/png">
    
    

    注意限制是以字节为单位

    在服务器端也要做响应的限制:

    $size=$myfile['size'];//获取文件大小
    $MaxSize=2097152;//设置最大允许字节
    $type=$myfile['type'];//获取图片类型
    $AllowTypr=array('image/jpeg','image/png','image/gif');//允许类型数组
    if ($error==0){//为0,代表上传成功
      if ($size>$MaxSize){
        echo "script>alert('文件大小超过限制');/script>";
        echo "script>history.back(1);/script>";
        exit();
      }
      if (!in_array($type,$AllowTypr)){
        echo "script>alert('请上传正确图片类型');/script>";
        echo "script>history.back(1);/script>";
        exit();
      }
    
    

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《PHP目录操作技巧汇总》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《PHP网络编程技巧总结》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • PHP 图片文件上传实现代码
    • 一个经典的PHP文件上传类分享
    • php+ajax实现图片文件上传功能实例
    • PHP实现视频文件上传完整实例
    • php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
    • 配置php.ini实现PHP文件上传功能
    • php+jQuery.uploadify实现文件上传教程
    • PHP实现文件上传功能实例代码
    • php 动态多文件上传
    • Thinkphp多文件上传实现方法
    上一篇:PHP使用PDO实现mysql防注入功能详解
    下一篇:Laravel 验证码认证学习记录小结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    php文件上传原理与实现方法详解 php,文件,上传,原理,与,实现,