本文讲述了thinkphp3.2实现上传图片的控制器方法。分享给大家供大家参考,具体如下:
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
public function file() { $baseUrl = str_replace ( '\\' , '/' , dirname( $_SERVER [ 'SCRIPT_NAME' ])); import( 'ORG.Net.UploadFile' ); import( 'ORG.Util.Services_JSON' ); $upload = new UploadFile(); $upload ->maxSize = 3145728; $upload ->allowExts = array ( 'jpg' , 'gif' , 'png' , 'jpeg' ); $upload ->savePath = './uploads/Images/' ; $info = $upload ->uploadOne( $_FILES [ 'imgFile' ]); $file_url = $baseUrl . 'uploads/Images/' . $info [ '0' ][ 'savename' ]; if ( $info ) { header( 'Content-type: text/html; charset=UTF-8' ); $json = new Services_JSON(); echo $json ->encode( array ( 'error' => 0, 'url' => $file_url )); exit ; } else { $this ->error( $upload ->getErrorMsg()); } } public function file_manager() { import( 'ORG.Util.Services_JSON' ); $php_path = dirname( __FILE__ ) . '/' ; $php_url = dirname( $_SERVER [ 'PHP_SELF' ]) . '/' ; $root_path = $php_path . './uploads/Images/' ; $root_url = $php_url . './uploads/Images/' ; $ext_arr = array ( 'gif' , 'jpg' , 'jpeg' , 'png' , 'bmp' ); $dir_name = emptyempty( $_GET [ 'dir' ]) ? '' : trim( $_GET [ 'dir' ]); if (!in_array( $dir_name , array ( '' , 'image' , 'flash' , 'media' , 'file' ))) { echo "Invalid Directory name." ; exit ; } if ( $dir_name !== '' ) { $root_path .= $dir_name . "/" ; $root_url .= $dir_name . "/" ; if (! file_exists ( $root_path )) { mkdir ( $root_path ); } } //根据path参数,设置各路径和URL if (emptyempty( $_GET [ 'path' ])) { $current_path = realpath ( $root_path ) . '/' ; $current_url = $root_url ; $current_dir_path = '' ; $moveup_dir_path = '' ; } else { $current_path = realpath ( $root_path ) . '/' . $_GET [ 'path' ]; $current_url = $root_url . $_GET [ 'path' ]; $current_dir_path = $_GET [ 'path' ]; $moveup_dir_path = preg_replace( '/(.*?)[^\/]+\/$/' , '$1' , $current_dir_path ); } echo realpath ( $root_path ); //排序形式,name or size or type $order = emptyempty( $_GET [ 'order' ]) ? 'name' : strtolower ( $_GET [ 'order' ]); //不允许使用..移动到上一级目录 if (preg_match( '/\.\./' , $current_path )) { echo 'Access is not allowed.' ; exit ; } //最后一个字符不是/ if (!preg_match( '/\/$/' , $current_path )) { echo 'Parameter is not valid.' ; exit ; } //目录不存在或不是目录 if (! file_exists ( $current_path ) || ! is_dir ( $current_path )) { echo 'Directory does not exist.' ; exit ; } //遍历目录取得文件信息 $file_list = array (); if ( $handle = opendir( $current_path )) { $i = 0; while (false !== ( $filename = readdir( $handle ))) { if ( $filename {0} == '.' ) continue ; $file = $current_path . $filename ; if ( is_dir ( $file )) { $file_list [ $i ][ 'is_dir' ] = true; //是否文件夹 $file_list [ $i ][ 'has_file' ] = ( count (scandir( $file )) > 2); //文件夹是否包含文件 $file_list [ $i ][ 'filesize' ] = 0; //文件大小 $file_list [ $i ][ 'is_photo' ] = false; //是否图片 $file_list [ $i ][ 'filetype' ] = '' ; //文件类别,用扩展名判断 } else { $file_list [ $i ][ 'is_dir' ] = false; $file_list [ $i ][ 'has_file' ] = false; $file_list [ $i ][ 'filesize' ] = filesize ( $file ); $file_list [ $i ][ 'dir_path' ] = '' ; $file_ext = strtolower ( pathinfo ( $file , PATHINFO_EXTENSION)); $file_list [ $i ][ 'is_photo' ] = in_array( $file_ext , $ext_arr ); $file_list [ $i ][ 'filetype' ] = $file_ext ; } $file_list [ $i ][ 'filename' ] = $filename ; //文件名,包含扩展名 $file_list [ $i ][ 'datetime' ] = date ( 'Y-m-d H:i:s' , filemtime ( $file )); //文件最后修改时间 $i ++; } closedir ( $handle ); } //排序 usort( $file_list , 'cmp_func' ); $result = array (); //相对于根目录的上一级目录 $result [ 'moveup_dir_path' ] = $moveup_dir_path ; //相对于根目录的当前目录 $result [ 'current_dir_path' ] = $current_dir_path ; //当前目录的URL $result [ 'current_url' ] = $current_url ; //文件数 $result [ 'total_count' ] = count ( $file_list ); //文件列表数组 $result [ 'file_list' ] = $file_list ; //输出JSON字符串 header( 'Content-type: application/json; charset=UTF-8' ); $json = new Services_JSON(); echo $json ->encode( $result ); } |
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。