本文实例讲述了PHP上传文件的方法。分享给大家供大家参考,具体如下:
Demo1.php
1
2
3
4
5
|
<form enctype= "multipart/form-data" action= "Demo2.php" method= "post" > <input type= "hidden" name= "MAX_FILE_SIZE" value= "2000000" /> 上传文件: <input type= "file" name= "userfile" /> <input type= "submit" value= "上传" /> </form> |
Demo2.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
<?php //接受上传文件 //$_FILES; //存在,但是空值 //[userfile][name] 表示上传的文件名 //[userfile][type] 表示文件类型:例如,jpg 的文件类型为:image/jpeg //[userfile][tmp_name]表示上传的文件临时存放的位置 C:\WINDOWS\temp\php28.tmp //[userfile][error]表示错误类型,表示没有任何错误。 //[userfile][size]表示上传文件的大小 print_r( $_FILES ); echo '<br/>' ; //is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的 //通过 HTTP POST 上传后,文件会存放在临时文件夹下 $fileMimes = array ( 'image/jpeg' , 'image/pjpeg' , 'image/gif' , 'image/png' , 'image/x-png' ); //判断类型是否是数组里的一种 if ( is_array ( $fileMimes )){ if (!in_array( $_FILES [ 'userfile' ][ 'type' ], $fileMimes )){ echo "<script>alert('本站只允许 jpg,png,gif 图片');history.back();</script>" ; exit ; } } //创建一个常量 define( 'URL' ,dirname( __FILE__ ). '\uploads' ); echo URL; //判断目录是否存在 if (! is_dir (URL)){ mkdir (URL,0777); //最大权限0777,意思是如果没有这个目录,那么就创建 } define( 'MAX_SIZE' ,2000000); if ( $_FILES [ 'userfile' ][ 'size' ] > MAX_SIZE){ echo "<script>alert('上传不得超过 2 M');history.back();</script>" ; exit ; } //还有两个问题要验证 //第二个问题,只允许 JPG 文件 // if($_FILES['userfile']['type'] != 'image/jpeg' && $_FILES['userfile']['type'] != 'image/pjpeg'){ // echo "<script>alert('本站只允许 JPG 图片');history.back();</script>"; // exit ; // } // switch ($_FILES['userfile']['type']){ // case 'image/jpeg'://火狐 // break; // case 'image/pjpeg': // break; // case 'image/gif': // break; // case 'image/png'://火狐 // break; // case 'image/x-png'://IE // break; // default: echo "<script>alert('本站只允许 jpg,png,gif 图片');history.back();</script>"; // exit ; // } //第一个问题,如果上传错误,怎么办 if ( $_FILES [ 'userfile' ][ 'error' ]>0){ switch ( $_FILES [ 'userfile' ][ 'error' ]){ case 1: echo "<script>alert('上传文件超过约定值1');history.back();</script>" ; break ; case 2: echo "<script>alert('上传文件超过约定值2');history.back();</script>" ; break ; case 3: echo "<script>alert('部分被上传');history.back();</script>" ; break ; case 4: echo "<script>alert('没有被上传');history.back();</script>" ; break ; } exit ; } if ( is_uploaded_file ( $_FILES [ 'userfile' ][ 'tmp_name' ])){ //就在这里移动了 //move_uploaded_file -- 将上传的文件移动到新位置 //第一个参数,写上临时文件的地址, //第二个参数,第二个参数要写上你要存在的地址 //先去判断这个目录是否存在 //如果想屏蔽掉警告,直接加上 @ if (!move_uploaded_file( $_FILES [ 'userfile' ][ 'tmp_name' ],URL. '/' . $_FILES [ 'userfile' ][ 'name' ])){ //如果移动失败,就失败 echo '移动失败' ; exit ; } } else { echo "<script>alert('临时文件夹找不到上传的文件');history.back();</script>" ; exit ; } //全部通过就上传成功了 //必须传一个值给Demo3.php //文件上传的地址 echo "<script>alert('文件上传成功');location.href='Demo3.php?url=" . $_FILES ['userfile '][' name ']."' ;</script>"; ?> |
Demo3.php
1
2
3
4
|
<?php $url = $_GET [ 'url' ]; echo "<img src=\"uploads/" . $url . "\"/>" ; ?> |
希望本文所述对大家PHP程序设计有所帮助。