PHP文件上传-单文件上传函数
2016-01-27 00:00
671 查看
文件上传函数:upload5.php
使用方法:
HTML表单页面
接收处理文件上传页面
<?php /** * @param array $file 文件上传的信息 * @param string $path 文件存放路径,不会自动生成,需要手动创建 * @param array $allowType 文件上传类型,默认是只允许上传图片类型 * @param int $maxSize 上传文件大小限制,字节数,默认不限制大小 * @return array $info 返回状态信息 */ function uploadFile($file,$path,$allowType=array(),$maxSize=0){ // 第一步 设置文件上传状态提示信息 $info = array( 'isok' => false, // 文件上传状态标识 'message' => '' // 文件上传提示信息 ); // 第二步 判断文件上传错误号,这个从根本上表名文件上传是否成功 if($file['error']>0){ // 如果错误号大于0,说明上传有问题 switch ($file['error']) { case 1: $info['message'] = '文件大小超出PHP的限制'; break; case 2: $info['message'] = '文件大小超出HTML的限制'; break; case 3: $info['message'] = '文件只有部分被上传'; break; case 4: $info['message'] = '没有文件被上传'; break; default: $info['message'] = '未知错误'; break; } // 终止执行 return $info; } // 验证文件类型 if(empty($allowType) || !is_array($allowType)){ $allowType = array('image/jpeg','image/png','image/gif','image/pjpeg','image/x-png'); } if(!in_array($file['type'], $allowType)){ $info['message'] = '文件类型不符合要求'; return $info; } // 验证文件大小 if($maxSize && $file['size']>$maxSize){ $info['message'] = '文件太大,超出限制'; return $info; } // 检测文件是否是通过HTTP POST方式上传的 if(is_uploaded_file($file['tmp_name'])){ // 处理上传路径 $path = rtrim($path,'/').'/'; // 获取文件后缀 $suffix = pathinfo($file['name'],PATHINFO_EXTENSION); // 生成文件名 do{ $filename = date('YmdHis').mt_rand(1000,9999).'.'.$suffix; }while(file_exists($path.$filename)); // 判断移动文件是否成功 if(move_uploaded_file($file['tmp_name'], $path.$filename)){ // 上传成功,修改状态信息 $info['isok'] = true; $info['message'] = $path.$filename; // 返回文件路径,用于写入数据库 return $info; } else { $info['message'] = '文件移动失败'; return $info; } } else { $info['message'] = '请使用HTTP POST方式上传'; return $info; } }
使用方法:
HTML表单页面
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form action="./1.php" method="post" enctype="multipart/form-data"> 文件:<input type="file" name="file"><br><br> <input type="submit" value="上传"> </form> </body> </html>
接收处理文件上传页面
<?php header("Content-type:text/html;charset=utf-8"); date_default_timezone_set("PRC"); // 引入函数 include('./upload5.php'); // 接收表单传递的数据 $file = $_FILES['file']; // 设置路径 $path = './upload/'; // 调用函数 $info = uploadFile($file,$path); // 输出信息 if($info['isok']){ echo '上传成功!文件名:'.$info['message']; } else { echo '上传失败!错误信息:'.$info['message']; }
相关文章推荐
- php课程---练习连接数据库及增删改
- mkyaffs2image制作根文件系统
- php原理全面剖析
- PHP Reflection API详解
- PHP过滤数据
- PHP之类型function
- PHP Notice: Constant **** already defined in解决
- 【PHP进阶篇 未完】6.会话控制(session与cookie)--慕课网【学习总结】
- PHP——修改数据库1
- PHP区分大小写:函数名和类名不区分,变量名区分
- PHP 加密技术
- 学习Slim Framework for PHP v3 (四)--get()是怎么加进去的?
- FragmentStatePagerAdapter与FragmentPagerAdapter的区别
- AMFPHP1.4与PHP5.3及以上版本号不兼容问题的解决
- 源码编译php5.4 ./configure参数
- php函数call_user_func和call_user_func_array详解
- 抽中概率 php
- php foreach 传值还是传引用
- 说说PHP中foreach引用的一个坑
- PHP curl 上传文件版本兼容问题