本文讲述了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程序设计有所帮助。