1 <?php
2 header('content-type:text/html;charset=utf-8');
3
4 function upload($fileInfo,$allowExt = array('jpeg', 'jpg', 'png', 'gif', 'pdf'), $maxSize = 2097152, $path = 'text', $flag = true)
5 {
6 $fileInfo = $_FILES['file1'];
7 // $maxSize = 2097152; // 允许上传的最大字节数2M
8 // $flag = true; // 检测是否真实类型
9 // 允许上传的文件类型,直接放在参数里了
10 // $allowExt = array(
11 // 'jpeg',
12 // 'png',
13 // 'png',
14 // 'gif',
15 // 'pdf'
16 // );
17 if(!is_array($allowExt)){
18 exit('系统错误');
19 }
20 // 1、判断错误号
21 if ($fileInfo['error'] == 0) {
22 // 判断上传文件的大小www.Bkjia.com
23 if ($fileInfo['size'] > $maxSize) {
24 exit('上传文件过大');
25 }
26 // 判断文件类型:两种方法--使用截取后缀名或者用自带扩展名的判定来判定
27 $ext = pathinfo($fileInfo['name'], PATHINFO_EXTENSION);
28 $ext = strtolower(end(explode('.', $fileInfo['name'])));
29 if (! in_array($ext, $allowExt)) {
30 exit('非法文件类型');
31 }
32 // 判断文件是否通过http post方式穿上的
33 if (! is_uploaded_file($fileInfo['tmp_name'])) {
34 exit('文件不是通过http post方法传上来的');
35 }
36 if ($flag) {
37 if (! getimagesize($fileInfo['tmp_name'])) {
38 exit('不是真正的图片类型');
39 }
40 }
41 // 上传文件,先判定路径是否存在,如果不存在则建立
42 // $path = 'text';
43 if (! file_exists($path)) {
44 mkdir($path, 0777, true);
45 chmod($path, 0777);
46 }
47
48 // 要确保文件名唯一,防止重名产生覆盖,使用加密函数md5,mcrotime表示微秒数,两个参数则为true;
49 $uniName = md5(uniqid(microtime(true), true)) . '.' . $ext;
50 // 测试是否可以加密输出 echo $uniName;
51 // exit();
52 $destination = $path . '/' . $uniName;
53 if (move_uploaded_file($fileInfo['tmp_name'], $destination)) {
54 // echo '上传成功';可以不仅仅是显示返回成功,可以返回文件的信息内容等
55 // return array(
56 // 'newName' => $destination,
57 // 'size' => $fileInfo['size'],
58 // 'type' => $fileInfo['type']
59 // );
60 return $destination;
61 //如果只要一个文件名,则return $destination即可
62 } else {
63 echo '上传失败';
64 }
65 } else {
66 // 匹配错误信息,与err号应该一一对应的
67 switch ($fileInfo['error']) {
68 case 1:
69 $remindMes= '上传文件超过了php配置文件中upload_max_filesize选项的值';
70 break;
71 case 2:
72 $remindMes= '上传文件超过了表单max_file_size选项的值';
73 break;
74 case 3:
75 $remindMes= '文件部分被上传';
76 break;
77 case 4:
78 $remindMes= '没有选择上传文件';
79 break;
80 case 6:
81 $remindMes= '沒有找到临时目录';
82 break;
83 case 7:
84
85 case 8:
86 $remindMes= '系统错误';
87 break;
88 }
89 exit($remindMes);
90 }
91 }
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号