UE移植到SAE云平台
应用架在新浪的SAE上,而同时功能中又需要用上编辑器,鉴于百度的UEditor功能强大,可定制,文档全,所以理所当然的用它。而新浪把本地文件的IO操作禁止了,使得UEdiotr的图片上传、附件和在线涂鸦功能都不可用了。发布文章是不能够上传图片和附件 的,只能采用网络图片,甚至自己先将图片和附件上传到云上,然后再超链接使用,虽然也可以解决问题,但是挺不痛快的。后来随着对SAE有了更深入的了解之后,发现新浪提供了Storage来支持文件上传,下面我就利用SAE的Storage对UEditor进行简单的修改,同时不影响以后的使用。
1、首先在Storage中创建一个名为"upload"的domain;
2、找到UEditor中处理上传功能的文件上传类;
我用的UEditor版本是最新的1.2.3.0 PHP版本,在这个版本中,官方提供的PHP上传功能都统一通过调用ueditor/php/Uploader.class.php 里的Uploader来实现。打开该文件,在构造函数中我们看到upFile这个函数被调用来实现上传。注意到upFile里面的这部分代码,大概第91行至97行处:
$this->fullName = $this->getFolder() . '/'. $this->getName();
if( $this->stateInfo == $this->stateMap[ 0 ] ) {
if(!move_uploaded_file($file[ "tmp_name"],$this->fullName)) {
$this->stateInfo = $this->getStateInfo( "MOVE");
}
}
我们把上面代码改成下面这个样子:
$this->fullName = $this->getFolder() . '/'. $this->getName();
if( $this->stateInfo == $this->stateMap[ 0 ] ) {
if(!defined('SAE_TMP_PATH')){
if( !move_uploaded_file( $file[ "tmp_name"] , $this->fullName ) ) {
$this->stateInfo = $this->getStateInfo( "MOVE");
}
}
else{
$st=newSaeStorage();
$url=$st->upload('upload',$this->fullName, $file[ "tmp_name"]);
if(!$url){
$this->stateInfo = $this->getStateInfo( "MOVE");
}
else{
$this->fullName=$url;
}
}
}
说 明:SAE_TMP_PATH是SAE平台上自动定义的常量,我们用它来判定是否是在SAE上(因为还要兼容其他开发环境),如果在SAE上,生成一个 SaeStorage对象,调用upload这个API,第一个参数是在SAE的Storage里创建的Domain,第二个参数是保存的文件名(可以包 含目录,如果目录不存在,Storage会自动创建),第三个参数则是文件的临时名。当图片上传成功后会返回图片的URL,我们直接 令$this->fullName=$url;这样程序就能返回图片的完整地址给UEditor了。
上面代码的第一行调用了getFolder,该方法源代码如下:
privatefunctiongetFolder()
{
$pathStr= $this->config[ "savePath"];
if( strrchr( $pathStr, "/") != "/") {
$pathStr.= "/";
}
$pathStr.= date( "Ymd");
if( !file_exists( $pathStr) ) {
if( !mkdir( $pathStr, 0777 , true ) ) {
returnfalse;
}
}
return$pathStr;
}
如果你有了解SAE上禁用函数和类,那你自然清楚mkdir在SAE上是不能用的!没关系,Storage它会自动帮我们创建目录,要对此做下改动,代码如下所示:
privatefunctiongetFolder()
{
$pathStr= $this->config[ "savePath"];
if( strrchr( $pathStr, "/") != "/") {
$pathStr.= "/";
}
$pathStr.= date( "Ymd");
if(!defined('SAE_TMP_PATH'))
{
if( !file_exists( $pathStr) ) {
if( !mkdir( $pathStr, 0777 , true ) ) {
returnfalse;
}
}
}
return$pathStr;
}
3、在editor_config.js中把所有的图片修正地址都改成""。
现 在我们传个图片试试,在Storage里面也能看到上传的文件,那说明文件成功上传了,但是在编辑器里面无法显示却裂了。看看链接的地址,原来 UEditor给我们的地址自动加上了图片修正地址。在editor_config.js中把所有的图片修正地址都改成"",如:
,imagePath:"" //图片修正地址,引用了fixedImagePath,如有特殊需求,可自行配置
,scrawlPath:"" //图片修正地址,同imagePath
,catcherPath:"" //图片修正地址,同imagePath
,imageManagerPath:"" //图片修正地址,同imagePath
然后清除缓存,重新上传个图片,这会编辑器中也能够显示图片。
UE移植到SAE云平台的更多相关文章
- 新浪SAE云平台下使用codeigniter的数据库配置
新浪SAE云平台下使用codeigniter的数据库配置 投稿:shichen2014 字体:[增加 减小] 类型:转载 这篇文章主要介绍了新浪SAE云平台下使用codeigniter的数据库配置,主 ...
- SAE云平台的使用
参考文章:http://www.cnblogs.com/luyangsblog/p/3956135.html Web开发从零单排之一:在新浪云平台SAE上开发一个htm ...
- SAE云平台上传图片和发送邮件
1.远程图片保存至Storage 其中public是Storage中的容器名,"目录1/目录2/"是容器下的路径 $file_content 是得到的文件数据 $s = new S ...
- 利用新浪云平台(SAE) 搭建 HUSTOJ 简易教程
前言: OnlineJudge(OJ)是一种代码在线判定平台,这里有许多的编程题目供你选择,你可以选择题目提交代码,OJ会自动返回你的代码的判定结果.是一种很方便的编程.算法练习平台.详情可见:百度百 ...
- Web开发从零单排之一:在新浪云平台SAE上开发一个html5电子喜帖
需求描述: 本人大婚将至,女朋友说“现在都流行在微信上发电子请帖了,你不是技(cheng)术(xu)宅(yuan)嘛,不会连这个都搞不定吧” 本人嘴上说这等小事何足挂齿,但心里还是七上八下的,虽然自认 ...
- Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解
Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解 (本文转自: http://blog.csdn.net/yinhaide/article/details/44756 ...
- 手把手教您将 libreoffice 移植到函数计算平台
LibreOffice 是由文档基金会开发的自由及开放源代码的办公室套件.LibreOffice 套件包含文字处理器.电子表格.演示文稿程序.矢量图形编辑器和图表工具.数据库管理程序及创建和编辑数学公 ...
- 026.[转] 基于Docker及Kubernetes技术构建容器云平台 (PaaS)
[编者的话] 目前很多的容器云平台通过Docker及Kubernetes等技术提供应用运行平台,从而实现运维自动化,快速部署应用.弹性伸缩和动态调整应用环境资源,提高研发运营效率. 本文简要介绍了与容 ...
- ESA2GJK1DH1K基础篇: 阿里云物联网平台: 云平台显示单片机采集的温湿度数据,控制设备继电器(基于GPRS模块,AT指令TCP_MQTT通信)
实现的功能 上一节是使用的Wi-Fi模块连接的阿里云平台,这节呢咱用GPRS连接. 阿里云的设备配置还是按照上一节的,有个温度,有个湿度. 测试 一,打开单片机程序 二,根据自己的修改,然后下载进去单 ...
随机推荐
- 什么是Jedis?
Jedis 是 Redis 官方首选的 Java 客户端开发包. 实例方法: 1 import redis.clients.jedis.* 1 2 3 Jedis jedis = new Jedis( ...
- JS获取URL地址参数
<script> var url = "http://127.0.0.1/index.php?old_quantity=168&date=1478309879000$id ...
- WebView·开发指南
WebView·开车指南 作者:凌俊琦链接:https://zhuanlan.zhihu.com/p/22247021来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. T ...
- 使用canvas绘制一片星空
效果图 五角星计算方式 代码 <body style="margin:0px;padding:0px;width:100%;height:100%;overflow:hidden;&q ...
- vs创建项目模板和项模板
原文地址:https://msdn.microsoft.com/zhcn/library/xkh1wxd8(v=vs.140).aspx 如何:创建项目模板 Visual Studio 2015 ...
- [bigdata] 启动CM出现 “JDBC Driver class not found: com.mysql.jdbc.Driver” 以及“Error creating bean with name 'serverLogFetcherImpl'”问题的解决方法
问题:“JDBC Driver class not found: com.mysql.jdbc.Driver” 通过以下命令启动cm [root@hadoop1 ~]# /etc/init.d/cl ...
- 动手实验iptables的NAT功能实现流量穿透
1.NAT和iptables理论见: http://lustlost.blog.51cto.com/2600869/943110 2.引子 近期,有同事抱怨说数据入库时,由于数据库所在的服务器只有内网 ...
- 搭建FTP服务器
yum install vsftpd -yyum install pam* db4* --skip-broken –y 创建并生成vsftpd 数据库文件vi /etc/vsftpd/ftpusers ...
- 10月30日上午MySQL数据库的修改(从网页上实现对数据库的更改)
从网页页面上对数据库进行更改,连接着之前做的增加.删除.查询. 1.先做一个修改页面 <body> <!--这个页面需要让用户看到一些数据,所以不是一个纯php页面,页面效果和增加页 ...
- Bootstrap学习笔记
Bootstrap提供了一套响应式.移动设备优先的流式栅格系统. Bootstrap把一个容器或整个网页平均分成了12列. 栅格系统必须放在.container或container-fluid中 样式 ...