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