加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php文件上传的应用和原理分析

发布时间:2022-07-18 14:00:11 所属栏目:PHP教程 来源:互联网
导读:php中上传文件必须知道几个技巧,一个必须是由表单post过去的数据,然后由php move_uploaded_file进行接受了,再保存到服务器指定路径即可。 1.form 标签 enctype 属性。 2.$_FILES 系统函数。 //将上传内容转换为数组。 3.move_uploaded_file 函数。 //移动
  php中上传文件必须知道几个技巧,一个必须是由表单post过去的数据,然后由php move_uploaded_file进行接受了,再保存到服务器指定路径即可。
 
  1.form 标签 enctype 属性。
 
  2.$_FILES 系统函数。 //将上传内容转换为数组。
 
  3.move_uploaded_file 函数。 //移动存放在缓存文件夹里的上传文件到指定文件夹。
 
  1.form 标签
 
  格式:<form enctype="multipart/form-data" ... ...>
 
  <input name="upfile" type="file">
 
  2.$_FILES 系统函数
 
  $_FILES['error'] //上传相关情况代码(0:成功,1:超过php.ini设置大小。2:超过PHP文件代码指定大小。3:文件只有部分被上传。4:没有文件被上传。5:上传文件大小为0。)
 
  3.move_uploaded_file 函数
 
  上传后移动文件到目标位置的函数
 
  move_uploaded_file(临时文件,目标位置和文件名;)
 
  4.is_uploaded_file 函数
 
  判断上传MIME类型的文件函数
 
  is_uploaded_file(MIME);
 
  实例代码如下:
 
  <form enctype="multipart/form-data" action="upload.php" method="post">  
  <input type="hidden" name="max_file_size" value="100000">  
  <input name="userfile" type="file">    
  <input type="submit" value="上传文件">  
  </form>
  注意:1、表单中enctype=”multipart/form-data”必须指定,以便让服务器知道文件带有常规的表单信息。
 
  2、必须有一个可以设置上传文件最大长度的表单区域,即允许上传文件的最大值(按字节计算),它是隐藏值域,即max_file_size,通过设置其Value(值)可以限制上传文件的大小,避免用户在花时间等待上传大文件之后才发现该文件太大了的麻烦。但是一般别人可以绕过这个值,所以安全起见,最好是在php.ini文件中配置upload_max_filesize选项,设定文件上传的大小,默认是2M
 
  实例代码如下:
 
  function uploadfile($type,$name,$ext,$size,$error,$tmp_name,$targetname,$upload_dir)
  {
       {
          if(!mkdir($upload_dir))
              die("文件上传目录不存在并且无法创建文件上传目录");
          if(!chmod($upload_dir,0755))
              die("文件上传目录的权限无法设定为可读可写");
      }
       
      if($size>$MAX_SIZE)
          die("上传的文件大小超过了规定大小");
      if($size == 0)
          die("请选择上传的文件");
      if(!in_array($type,$FILE_MIMES) || !in_array($ext,$FILE_EXTS))
          die("请上传符合要求的文件类型");
      if(!move_uploaded_file($tmp_name, $file_path))
          die("复制文件失败,请重新上传");
      switch($error)
      {
          case 0:
              return ;
          case 1:
              die("上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值");
          case 2:
              die("上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值");
          case 3:
              die("文件只有部分被上传");
          case 4:
              die("没有文件被上传");
      }
  }
  如何上传多个文件?比如同时上传3个文件,代码如下:
 
  只需将<input name="userfile" type="file"> 改成
 
  <input name="userfile[]" type="file">
 
  对应的在调用此函数时,$_FILES['userfile']['name'][0],代表第一个文件的相关文件信息,依此类推,其他也一样。
 
  一些关于php性能配置,有必须时我们也可以修改一下
 
  max_execution_time = 30 ;每个PHP页面运行的最大时间值(秒),默认30秒
 
  max_input_time = 60 ;每个PHP页面接收数据所需的最大时间,默认60秒
 
  memory_limit = 128m ;每个PHP页面所吃掉的最大内存,默认128M,如果觉得小了,可以设置大点,128够用。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读