在配置文件中找到
'PICTURE_UPLOAD_DRIVER'=>'Local',
把它改成要使用的驱动,如我使用的是七牛
'PICTURE_UPLOAD_DRIVER'=>'QINIU'
<?php
/**
* 前台配置文件
* 所有除开系统级别的前台配置
*/
$token = get_token();
return array(
// 预先加载的标签库
'TAGLIB_PRE_LOAD' => 'OT\\TagLib\\Article,OT\\TagLib\\Think',
/* 主题设置 */
'DEFAULT_THEME' => 'default', // 默认模板主题名称
/* SESSION 和 COOKIE 配置 */
'SESSION_PREFIX' => 'weiphp_home', //session前缀
'COOKIE_PREFIX' => 'weiphp_home_', // Cookie前缀 避免冲突
/**
* 附件相关配置
* 附件是规划在插件中的,所以附件的配置暂时写到这里
* 后期会移动到数据库进行管理
*/
'ATTACHMENT_DEFAULT' => array(
'is_upload' => true,
'allow_type' => '0,1,2', //允许的附件类型 (0-目录,1-外链,2-文件)
'driver' => 'Local', //上传驱动
'driver_config' => null, //驱动配置
), //附件默认配置
'ATTACHMENT_UPLOAD' => array(
'mimes' => '', //允许上传的文件MiMe类型
'maxSize' => 5*1024*1024, //上传的文件大小限制 (0-不做限制)
'exts' => 'jpg,gif,png,jpeg,zip,rar,tar,gz,7z,doc,docx,txt,xml', //允许上传的文件后缀
'autoSub' => true, //自动子目录保存文件
'subName' => array('date', 'Y-m-d'), //子目录创建方式,[0]-函数名,[1]-参数,多个参数使用数组
'rootPath' => './Uploads/Attachment/', //保存根路径
'savePath' => '', //保存路径
'saveName' => array('uniqid', ''), //上传文件命名规则,[0]-函数名,[1]-参数,多个参数使用数组
'saveExt' => '', //文件保存后缀,空则使用原后缀
'replace' => false, //存在同名是否覆盖
'hash' => true, //是否生成hash编码
'callback' => false, //检测文件是否存在回调函数,如果存在返回文件信息数组
), //附件上传配置(文件上传类配置)
/* 模板相关配置 */
'TMPL_PARSE_STRING' => array(
'__STATIC__' => __ROOT__ . '/Public/static',
'__ADDONS__' => __ROOT__ . '/Public/' . MODULE_NAME . '/Addons',
'__IMG__' => __ROOT__ . '/Public/' . MODULE_NAME . '/images',
'__CSS__' => __ROOT__ . '/Public/' . MODULE_NAME . '/css',
'__JS__' => __ROOT__ . '/Public/' . MODULE_NAME . '/js',
),
/* 数据缓存设置 */
'DATA_CACHE_PREFIX' => 'weiphp_', // 缓存前缀
'DATA_CACHE_TYPE' => 'File', // 数据缓存类型
/* 文件上传相关配置 */
'DOWNLOAD_UPLOAD' => array(
'mimes' => '', //允许上传的文件MiMe类型
'maxSize' => 5*1024*1024, //上传的文件大小限制 (0-不做限制)
'exts' => 'jpg,gif,png,jpeg,zip,rar,tar,gz,7z,doc,docx,txt,xml', //允许上传的文件后缀
'autoSub' => true, //自动子目录保存文件
'subName' => array('date', 'Y-m-d'), //子目录创建方式,[0]-函数名,[1]-参数,多个参数使用数组
'rootPath' => './Uploads/Download/', //保存根路径
'savePath' => '', //保存路径
'saveName' => array('uniqid', ''), //上传文件命名规则,[0]-函数名,[1]-参数,多个参数使用数组
'saveExt' => '', //文件保存后缀,空则使用原后缀
'replace' => false, //存在同名是否覆盖
'hash' => true, //是否生成hash编码
'callback' => false, //检测文件是否存在回调函数,如果存在返回文件信息数组
), //下载模型上传配置(文件上传类配置)
/* 图片上传相关配置 */
'PICTURE_UPLOAD' => array(
'mimes' => '', //允许上传的文件MiMe类型
'maxSize' => 2*1024*1024, //上传的文件大小限制 (0-不做限制)
'exts' => 'jpg,gif,png,jpeg', //允许上传的文件后缀
'autoSub' => true, //自动子目录保存文件
'subName' => array('date', 'Y-m-d'), //子目录创建方式,[0]-函数名,[1]-参数,多个参数使用数组
'rootPath' => './Uploads/Picture/', //保存根路径
'savePath' => '', //保存路径
'saveName' => array('uniqid', ''), //上传文件命名规则,[0]-函数名,[1]-参数,多个参数使用数组
'saveExt' => '', //文件保存后缀,空则使用原后缀
'replace' => false, //存在同名是否覆盖
'hash' => true, //是否生成hash编码
'callback' => false, //检测文件是否存在回调函数,如果存在返回文件信息数组
), //图片上传相关配置(文件上传类配置)
'PICTURE_UPLOAD_DRIVER'=>'QINIU',
//本地上传文件驱动配置
'UPLOAD_LOCAL_CONFIG'=>array(),
'UPLOAD_BCS_CONFIG'=>array(
'AccessKey'=>'',
'SecretKey'=>'',
'bucket'=>'',
'rename'=>false
),
'UPLOAD_QINIU_CONFIG'=>array(
'accessKey'=>'-',
'secrectKey'=>'',
'bucket'=>'',
'domain'=>'',
'timeout'=>3600,
),
/* 编辑器图片上传相关配置 */
'EDITOR_UPLOAD' => array(
'mimes' => '', //允许上传的文件MiMe类型
'maxSize' => 2*1024*1024, //上传的文件大小限制 (0-不做限制)
'exts' => 'jpg,gif,png,jpeg', //允许上传的文件后缀
'autoSub' => true, //自动子目录保存文件
'subName' => array('date', 'Y-m-d'), //子目录创建方式,[0]-函数名,[1]-参数,多个参数使用数组
'rootPath' => './Uploads/Editor/'.$token.'/', //保存根路径
'savePath' => '', //保存路径
'saveName' => array('uniqid', ''), //上传文件命名规则,[0]-函数名,[1]-参数,多个参数使用数组
'saveExt' => '', //文件保存后缀,空则使用原后缀
'replace' => false, //存在同名是否覆盖
'hash' => true, //是否生成hash编码
'callback' => false, //检测文件是否存在回调函数,如果存在返回文件信息数组
),
);
然后修改Addons EditorbyAdmin 下的Controller/UploadController.class.php,代码如下
<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: huajie <banhuajie@163.com>
// +----------------------------------------------------------------------
namespace Addons\EditorForAdmin\Controller;
use Home\Controller\AddonsController;
use Think\Upload;
class UploadController extends AddonsController {
public $uploader = null;
/* 上传图片 */
public function upload() {
/* 上传配置 */
$setting = C ( 'EDITOR_UPLOAD' );
$setting ['callback'] = array (
$this,
'isFile'
);
/* 调用文件上传组件上传文件 */
$pic_driver = C('PICTURE_UPLOAD_DRIVER');
$this->uploader = new Upload($setting, C('PICTURE_UPLOAD_DRIVER'),C("UPLOAD_{$pic_driver}_CONFIG"));
//$this->uploader = new Upload ( $setting, 'Local' );
$info = $this->uploader->upload ( $_FILES );
if ($info) {
$dao = D ( 'Picture', 'Home' );
foreach ( $info as &$file ) {
$file ['rootpath'] = __ROOT__ . ltrim ( $setting ['rootPath'], "." );
/* 已经存在文件记录 */
if (isset ( $file ['id'] ) && is_numeric ( $file ['id'] )) {
continue;
}
/* 记录文件信息 */
$file ['path'] = substr ( $setting ['rootPath'], 1 ) . $file ['savepath'] . $file ['savename'];
$file ['status'] = 1;
$file ['create_time'] = NOW_TIME;
if ($dao->create ( $file ) && ($id = $dao->add ())) {
$file ['id'] = $id;
}
}
}
return $info;
}
// keditor编辑器上传图片处理
public function ke_upimg() {
/* 返回标准数据 */
$return = array (
'error' => 0,
'info' => '上传成功',
'data' => ''
);
$info = $this->upload ();
$img = $info ['imgFile'] ['rootpath'] . $info ['imgFile'] ['savepath'] . $info ['imgFile'] ['savename'];
/* 记录附件信息 */
if ($img) {
$return ['id'] = $info ['imgFile'] ['id'];
$return ['url'] = $img;
unset ( $return ['info'], $return ['data'] );
} else {
$return ['error'] = 1;
$return ['message'] = $this->uploader->getError ();
}
/* 返回JSON数据 */
exit ( json_encode ( $return ) );
}
// ueditor编辑器上传图片处理
public function ue_upimg() {
$info = $this->upload ();
$pic_driver = C('EDITOR_UPLOAD_DRIVER');
if (strtolower($pic_driver) == 'local') {
$img = $info ['imgFile'] ['path'];
} else {
$img = $info ['imgFile']['url'];
}
$return = array ();
$return ['id'] = $info ['imgFile'] ['id'];
$return ['url'] = $img;
$title = htmlspecialchars ( $_POST ['pictitle'], ENT_QUOTES );
$return ['title'] = $title;
$return ['original'] = $info ['imgFile'] ['name'];
$return ['state'] = ($img) ? 'SUCCESS' : $this->uploader->getError ();
/* 返回JSON数据 */
$this->ajaxReturn ( $return );
}
// ueditor编辑器在线管理处理
// 扫描目录下(包括子文件夹)的图片并返回
public function ue_mgimg() {
$setting = C ( 'EDITOR_UPLOAD' );
$imgRootPath = $setting ['rootPath'];
$paths = array (
''
);
$files = array ();
$files = $this->getfiles ( $imgRootPath );
if (! count ( $files ))
return;
rsort ( $files, SORT_STRING );
$str = implode ( '|', $files );
echo $str;
}
/**
* 遍历获取目录下的指定类型的文件
*
* @param
* $path
* @param array $files
* @return array
*/
function getfiles($path, &$files = array()) {
if (! is_dir ( $path ))
return null;
$handle = opendir ( $path );
while ( false !== ($file = readdir ( $handle )) ) {
if ($file != '.' && $file != '..') {
$path2 = $path . '/' . $file;
if (is_dir ( $path2 )) {
$this->getfiles ( $path2, $files );
} else {
if (preg_match ( "/\.(gif|jpeg|jpg|png|bmp)$/i", $file )) {
// $files[] = '/dev/'.$path2;
$files [] = __ROOT__ . '/' . ltrim ( ltrim ( $path2, '.' ), '/' );
}
}
}
}
return $files;
}
/**
* 检测当前上传的文件是否已经存在
*
* @param array $file
* 文件上传数组
* @return boolean 文件信息, false - 不存在该文件
*/
public function isFile($file) {
if (empty ( $file ['md5'] )) {
throw new \Exception ( '缺少参数:md5' );
}
/* 查找文件 */
$map = array (
'md5' => $file ['md5'],
'sha1' => $file ['sha1']
);
return M ( 'Picture' )->field ( true )->where ( $map )->find ();
}
}