Ueditor 1.4.3.1 使用 ThinkPHP 3.2.3 的上传类进行图片上传
在 ThinkPHP 3.2.3 中集成百度编辑器最新版 Ueditor 1.4.3.1,同时将编辑器自带的上传类替换成 ThinkPHP 3.2.3 中的上传类。
① 下载编辑器(下载地址:http://ueditor.baidu.com/website/download.html),解压后放入项目根目录的 Data 目录并且将解压出来的目录重命名为 ueditor。
项目中的控制器 ./Application/Admin/Controller/BlogController.class.php 和 视图 ./Application/Admin/View/Blog_add_blog.html 分别是添加博客文章的控制器和视图。
② 在 Blog_add_blog.html 中引入编辑器的配置文件 ./Data/ueditor/ueditor.config.js 和 编辑器的类库文件 ./Data/ueditor/ueditor.all.min.js
③ 在 Blog_add_blog.html 中,用于填写文章的文本域:
<textarea name="content" id="content"></textarea>
因此需要在视图文件的 js 中进行设置,根据默认文本域的 id 将文本域替换成百度编辑器:
<script>
window.UEDITOR_HOME_URL = '__ROOT__/Data/ueditor/';
window.onload = function() {
UE.getEditor('content');
}
</script>
同时可以对编辑器的其他配置进行设置,例如:
window.onload = function() {
window.UEDITOR_CONFIG.initialFrameWidth = 750; //初始化编辑器宽度
window.UEDITOR_CONFIG.initialFrameHeight = 200; //初始化编辑器高度
UE.getEditor('content');
}
④ 根据浏览器的开发者工具可以看到在上传图片时请求的地址是 ./Data/ueditor/php/controller.php,参数 action = uploadimage

controller.php 是服务器统一请求接口路径,在 line 9 ~ line 23 中如果请求的参数 action = uploadimage 时,则
$result = include("action_upload.php");
在 action_upload.php 中包含了上传的配置选项,并且包含了 Uploader.class.php 文件
Uploader.class.php 文件是 ueditor 的上传类文件。
因此如果需要自定义上传类,只需要自定义请求地址即可(把 controller.php 替换成自己的地址),根据文档中 http://fex.baidu.com/ueditor/#qa-customurl 的说明,由于所有ueditor请求都通过editor对象的getActionUrl方法获取请求地址,可以直接通过复写这个方法实现在视图文件,只需要 ./Application/Admin/View/Blog_add_blog.html 的 js 中添加上:
UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
UE.Editor.prototype.getActionUrl = function(action) {
if (action == 'uploadimage') { //上传图片
return "{:U('Admin/Blog/upload',array('action'=>'uploadimage'),'')}";
} else if(action == 'config') { //加载配置
return this._bkGetActionUrl.call(this, action);
}
}
视图文件完整的 js:
<!-- ueditor start-->
<script>
window.UEDITOR_HOME_URL = '__ROOT__/Data/ueditor/';
window.onload = function() {
window.UEDITOR_CONFIG.initialFrameWidth = 750; //初始化编辑器宽度
window.UEDITOR_CONFIG.initialFrameHeight = 200; //初始化编辑器高度
//自定义请求地址
UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
UE.Editor.prototype.getActionUrl = function(action) {
if (action == 'uploadimage') { //上传图片
return "{:U('Admin/Blog/upload',array('action'=>'uploadimage'),'')}";
} else if(action == 'config') { //加载配置
return this._bkGetActionUrl.call(this, action);
}
}
//自定义请求地址结束
UE.getEditor('content');
}
</script>
<script src="__ROOT__/Data/ueditor/ueditor.config.js"></script>
<script src="__ROOT__/Data/ueditor/ueditor.all.min.js"></script>
<!--ueditor end-->
⑤ 在控制器的 upload 方法中,只需要对 ./Data/ueditor/controller.php 中的方法进行修改:
<?php
namespace Admin\Controller;
use Think\Upload; class BlogController extends CommonController{
//上传图片
public function upload() {
date_default_timezone_set("Asia/chongqing");
error_reporting(E_ERROR);
header("Content-Type: text/html; charset=utf-8"); $CONFIG = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents("config.json")), true);
$action = $_GET['action'];
if('uploadimage' == $action) { //上传图片
//处理图片上传开始
//实例化上传类
$upload = new Upload();
//配置
$upload->subName = array('date', 'Ym');//子目录创建方式
//上传
$info = $upload->upload();
//p($info);//上传信息
if($info) {
/**
* 得到上传文件所对应的各个参数,数组结构
* array(
* "state" => "", //上传状态,上传成功时必须返回"SUCCESS"
* "url" => "", //返回的地址
* "title" => "", //新文件名
* "original" => "", //原始文件名
* "type" => "" //文件类型
* "size" => "", //文件大小
* )
*/
$arr = array(
'state'=>'SUCCESS',
'url'=>'http://'.$_SERVER['SERVER_NAME'].'/Uploads/'.$info['upfile']['savepath'].$info['upfile']['savename'],
'title'=>$info['upfile']['savename'],
'original'=>$info['upfile']['name'],
'type'=>$info['upfile']['ext'],
'size'=>$info['upfile']['size']
);
//print_r($arr);
/* 返回数据 */
$result = json_encode($arr);
} else {
$arr = array('state'=>$upload->getError());
}
//图片上传结束
} elseif('config' == $action) { //加载配置
$result = json_encode($CONFIG);
}
/* 输出结果 */
if (isset($_GET["callback"])) {
if (preg_match("/^[\w_]+$/", $_GET["callback"])) {
echo htmlspecialchars($_GET["callback"]) . '(' . $result . ')';
} else {
echo json_encode(array(
'state'=> 'callback参数不合法'
));
}
} else {
echo $result;
}
}
}
Ueditor 1.4.3.1 使用 ThinkPHP 3.2.3 的上传类进行图片上传的更多相关文章
- ueditor 百度编辑器 自定义图片上传路径和格式化上传文件名
今天项目中需要自定义图片上传的保存路径,并且不需要按照日期自动创建存储文件夹和文件名,我的ueditor版本是1.3.6.下面记录一下我配置成功的方法,如果有什么不对的地方欢迎指出,共同学习: 1:我 ...
- ThinkPHP示例:图片上传
ThinkPHP示例之图片上传,包括图片上传.数据库保存.缩略图生成以及图片水印功能演示.首先需要下载框架核心,然后把示例解压到Web根目录下面,并修改入口文件中的框架入口文件的位置.导入示例目录下面 ...
- 百度编辑器前后端二开图片上传Js Thinkphp tp5 ueditor
百度编辑器图片上传Jsueditor.all.min.js 下载链接 链接:https://pan.baidu.com/s/1VNgw9ELgRRHKeCQheFkQTw 提取码:fnfi 使用方法: ...
- uEditor独立图片上传
项目中.上传图片,非常希望有一款比较兼容的查件. 网上找了一些,图片上传立刻显示的js代码,还有uploadify.都会碰到这样那样的不兼容和其它头疼的问题. 后来想,干脆就用php的上传类最干脆.但 ...
- ThinkPHP3.1.3 整合 UEditor百度编辑器 图片上传
第一步.前端模板实例化百度编辑器 <js file='__ROOT__/Data/UEditor/ueditor.config.js' /> <js file='__ROOT__/D ...
- 对百度的UEditor多图片上传的一些补充
我已经写了一篇文章关于百度的UEditor提取多图片上传模块.如果还没有看过,请点击以下链接查看 http://www.cnblogs.com/luke1006/p/3719029.html 出差了两 ...
- THINKPHP源码学习--------文件上传类
TP图片上传类的理解 在做自己项目上传图片的时候一直都有用到TP的上传图片类,所以要进入源码探索一下. 文件目录:./THinkPHP/Library/Think/Upload.class.php n ...
- 百度UEditor在线编辑器的配置和图片上传
前言 最近在项目中使用了百度UEditor富文本编辑器,配置UEditor过程中遇到了几个问题,在此记录一下解决方案和使用方法,避免以后使用UEditor出现类似的错误. 基本配置 一.下载UEdit ...
- 关于editor网页编辑器ueditor.config.js 配置图片上传
最近公司项目在做一个门户网站,其中新闻和简介等部分使用到了ueditor编辑器,但是上级明确指示需要图片上传这个功能,这时却发现图片上传功能不能正常使用,上传时一直报错,网上收了好几个处理办法,都说的 ...
随机推荐
- 02 CSS/javaScript
CSS(Cascading Style Sheets)是层叠样式表用来设置网页的显示效果.可以解决html代码对样式定义的重复,提高了后期样式代码的可维护性,并增强了网页的显示效果功能.简单一句话:C ...
- jQuery-品牌列表案例
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 2.使用Package Control组件安装
安装Sublime Text 2插件的方法: 1.直接安装 安装Sublime text 2插件很方便,可以直接下载安装包解压缩到Packages目录(菜单->preferences->p ...
- App测试时,区分客户端或服务器端导致问题产生的方法
1.先确定产生问题的地方是否与服务器产生交互/通信,若无则非服务器问题: 2.通过Fiddler抓包,查看操作时调用的服务器接口是否正常并检查对应返回值: 3.若接口返回值正常,则需查看客户端对业务的 ...
- 【BZOJ1827】[Usaco2010 Mar]gather 奶牛大集会 树形DP
[BZOJ][Usaco2010 Mar]gather 奶牛大集会 Description Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来 ...
- 【CQgame】[下一百层] [Down]
简单的下一百层的c++实现,代码一晚上就码完了 注意:游戏前请在 默认值 或 属性 中调整缓冲区大小,否则会输出爆屏,方法写在代码里了 觉得速度 快/慢 的可以在第 23 行手动改一下,相信大神们能看 ...
- JavaScript实现存储HTML字符串
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...
- ACM 奋斗的小蜗牛
奋斗的小蜗牛 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 传说中能站在金字塔顶的只有两种动物,一种是鹰,一种是蜗牛.一只小蜗牛听了这个传说后,大受鼓舞,立志要爬上 ...
- JS:操作样式表2 :用JS实现添加和删除一个类名的功能(addClass()和removeClass())
var box = document.getElementById("box"); box.id = "pox"; 将id = “box”,改为id = “po ...
- nmap的script参数列表
在新的nmap版本中,添加了script功能的使用.在nmap的安装目录的share/nmap/scripts中,已经有将61个写好的脚本提供. 具体的用法可以参考:http://nmap.org/b ...