thinkphp3.2实现上传图片的控制器方法
内容摘要
本文讲述了thinkphp3.2实现上传图片的控制器方法。分享给大家供大家参考,具体如下:
public function file()
{
$baseUrl = str_replace('\\', '/', dirname($_SERVER['SCR
public function file()
{
$baseUrl = str_replace('\\', '/', dirname($_SERVER['SCR
文章正文
本文讲述了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相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
代码注释