加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP对文件上传的处理措施

发布时间:2022-07-18 14:23:56 所属栏目:PHP教程 来源:互联网
导读:在php中文件上传我们由html客户端与服务器端php处理组成,中间会有一些由files全局变量对数据判断与移动操作,下面一起来看看. $_FILES参数详解: $_FILES[file][name] 被上传文件的名称 $_FILES[file][type] 被上传文件的类型 $_FILES[file][size] 被上传文件
  在php中文件上传我们由html客户端与服务器端php处理组成,中间会有一些由files全局变量对数据判断与移动操作,下面一起来看看.
 
  $_FILES参数详解:
 
  $_FILES["file"]["name"] – 被上传文件的名称
 
  $_FILES["file"]["type"] – 被上传文件的类型
 
  $_FILES["file"]["size"] – 被上传文件的大小,以字节计
 
  html客户端
 
  1.客户端上传设置
 
  文件上传的最基本方法,是使用HTML表单选择本地文件进行提交,在form表单中可以通过<input type=”file”>标记选择本地文件,如果支持文件上传操作,必须在<form>标签中将enctype和method两个属性指明相应的值,如下所示:
 
  ★method=”POST”用来指明发送数据的方法.
 
  另外,还需要在form表单中设置一个hidden类型的input框,其中name的值为MAX_FILL_SIZE的隐藏值域,并通过设置其VALUE的值限制上传文件的大小(单位字节),但这个值不能超过PHP的配置文件中upload_max_filesize值设置的大小,文件上传表单代码如下所示:
 
  <html>
  <head><title>文件上传</title></head>
  <body>
  <form action='upload.php' method="post" enctype="multipart/form-data">
  <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
  选择文件<input type="file" name="上传文件">
  </form>
  </body>
  </html>
  upload.php服务器端,代码如下:
 
  <?php  
  $allowtype = array('gif','png','jpg');
  $size = 1000000;
  $path = "./uploads"; //设置上传后保存文件的路径
   
  //判断文件是否可以成功上传到服务器,$_FILES['myfile']['error']为0则表示上传成功
  if ($_FILES['myfile']['error']>0){
  echo '上传错误:';
  switch($_FILES['myfile']['error']){
  case 1: die('上传文件大小超出了PHP配置文件中的约定值:upload_max_filesize');break;
  case 2:die('上传文件大小超出表单中的约定值:MAX_FILE_SIZE');break;
  case 3: die('上传文件只部分被上载');break;
  case 4: die('没有上传任何文件');break;
  default:die('未知错误');
  }
    
  //判断上传的文件是否为允许大小
  if($_FILES['myfile']['size']> $size){
  die("超过了允许的<b>{$size}</b>字节大小");
  }
   
  //为了系统安全,也为了同名文件不会被覆盖,上传后将文件名实用系统定义
  $filename = data("YmdHis").rand(100, 900).".".$hz;
  //开源软件:phpfensi.com
  //判断是否为上传文件
  if(is_uploaded_file($_FILES['myfile']['tmp_name'])){
  if(!move_uploaded_file($_FILES['myfile']['tmp_name'], $path.'/'.$filename)){
  die('问题:不能将文件移动到指定目录。');
  }
  }else{
  die("问题:上传文件{$_FILES['myfile']['name']}不是一个合法的文件:");
  }
  //如果文件上传成功则输出
  echo "文件{$upfile}上传成功,保存在目录{$path}中,大小为{$_FILES['myfile']['size']}字节";
  ?>
  如果我们要多文件上传只要简单对于html上传表单以数据形式操作,代码如下:
 
  <form action="" method="post" enctype="multipart/form-data">
  <input type="hidden" name="MAX_FILE_SIZE" value="">
  <input type="file" name="pic[]" /><br><br>
  <input type="file" name="pic[]" /><br><br>
  <input type="file" name="pic[]" /><br><br>
  <input type="file" name="pic[]" /><br><br>
  <input type="submit" value="upload"/>
  </form>
  然后对于upload.php处理文件我们只要遍历数组pic[]就可以了.
 
  for($i=0;$i<count($up_info['name']);$i++){
  }
  //这样//foreach 循环处理多个文件上传
  ①函数is_uploaded_file()
 
 
  PHP上传文件大小限制解决方法:
 
  第一:在php.ini里面查看如下行:
 
  upload_max_filesize = 8M  
  post_max_size = 10M  
  memory_limit = 20M  
  把这些值改成我所说的,看看有没有问题,另外要确认上传的 <form> 里没有类似下面的这行<input type="hidden" name="MAX_FILE_SIZE" value="500000">这样也是限制上传大小用的.
 
  第二:如果是apache 2 需要修改
 
  /etc/httpd/conf.d/php.conf
 
  中的LimitRequestBody 524288将524288(=512×1024)改大,比如5M(=5×1024×1024)这样上传就不会出现如上问题,上传不响应,上传现实该页无法现实也将得到解决.

(编辑:PHP编程网 - 黄冈站长网)

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

    热点阅读