首先我目测UE整个后台代码
得出结论,后台要实现的功能有:文件上传、文件列出、远程抓取,并且要返回一个状态信息
整个过程是通过Ajax实现的,非常不好调试:
前端发送一个get请求,后台通过判断get来执行不同的单元。
首先要从后台返回配置信息,比如$_GET['action']的值,input表单名,不同的功能有不同的配置信息。
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'];
switch ($action) {
case 'config':
$result = json_encode($CONFIG);
break;如果配置文件没有加载,程序会停止执行。下面说说我是如何整合。
一、上传文件。
有人会说,上传文件直接用TP的上传类不就行了吗?是的,我也是这么想的,也是这么做的,因为TP上传类是兼容SAE的。TP的上传是通过驱动实现的,本地用local.class.php,SAE用sae.class.php。哈哈,我之前发过一个求助帖,在研究Upload/Driver/Sae.class.php这个驱动的时候。http://www.thinkphp.cn/topic/21155.html在此再次感谢大神的回复。
UE的上传分为:上传图片,上传视频,上传文件,上传涂鸦。
php的文件上传无非就是获取$_FILES数组,然后用move_uploaded_file()函数处理。可是问题在于“上传涂鸦”,这个过程是不一样的。“上传涂鸦”:前端用Cavas生成图像信息,再进行ba
namespace Think\Storage\Driver;
use Think\Storage;
// SAE环境文件写入存储类
class Sae extends Storage{
/**
* 架构函数
* @access public
*/
private $mc;
private $kvs = array();
private $htmls = array();
private $contents = array();
public function __construct() {
if(!function_exists('memcache_init')){
header('Content-Type:text/html;charset=utf-8');
exit('请在SAE平台上运行代码。');
}
$this->mc = @memcache_init();
if(!$this->mc){
header('Content-Type:text/html;charset=utf-8');
exit('您未开通Memcache服务,请在SAE管理平台初始化Memcache服务');
}
}
/**
* 获得SaeKv对象
*/
private function getKv(){
static $kv;
if(!$kv){
$kv = new \SaeKV();
if(!$kv->init())
E('您没有初始化KVDB,请在SAE管理平台初始化KVDB服务');
}
return $kv;
}文件写入方法为: /**
* 文件写入
* @access public
* @param string $filename 文件名
* @param string $content 文件内容
* @return boolean
*/
public function put($filename,$content,$type=''){
switch(strtolower($type)){
case 'f':
$kv = $this->getKv();
$this->kvs[$filename] = $content;
return $kv->set($filename,$content);
case 'html':
$kv = $this->getKv();
$content = time().$content;
$this->htmls[$filename] = $content;
return $kv->set($filename,$content);
default:
$content = time().$content;
if(!$this->mc->set($filename,$content,MEMCACHE_COMPRESSED,0)){
E(L('_STORAGE_WRITE_ERROR_').':'.$filename);
}else{
$this->contents[$filename] = $content;
return true;
}
}
}所以我的结论就,no way!二、文件列出。
TP的Storage类中没有这个方法。
三、远程抓取。
还在研究中。。。
综上所述:只能重写Storage驱动。
以上都是我个人的观点,望各位大侠指点赐教!
最佳答案