Ueditor版本1.3.6
处理Ueditor上传代码如下:
<?php
/**
* Ueditor编辑器
*/
namespace Admin\Controller;
use Think\Controller;
class UeditorController extends AdminController {
//上传图片
public function imageUp() {
//上传图片框中的描述表单名称,
$title = htmlspecialchars($_POST['pictitle'], ENT_QUOTES);
$path = htmlspecialchars($_POST['dir'], ENT_QUOTES);
$imgSavePathConfig = C('IMAGE_UPLOADS_PATH');
//获取存储目录
if ( isset( $_GET[ 'fetch' ] ) ) {
echo 'updateSavePath('. json_encode($imgSavePathConfig) .');';
return;
}
//上传配置
$config = array(
"savePath" => $imgSavePathConfig,
"maxSize" => C('IMAGE_MAX_SIZE'), //单位KB
"allowFiles" => C('IMAGE_ALLOW_FILES'),
"fileNameFormat" => $_POST['fileNameFormat']
);
if ( empty( $path ) ) {
$path = $config[ 'savePath' ][ 0 ];
}
//上传目录验证
if ( !in_array( $path, $config[ 'savePath' ] ) ) {
//非法上传目录
echo '{"state":"\u975e\u6cd5\u4e0a\u4f20\u76ee\u5f55"}';
return;
}
$config[ 'savePath' ] = $path . '/';
$this->ueUp($config);
}
//图片在线管理配置区
public function imageManager() {
//需要遍历目录
$paths = C('IMAGE_UPLOADS_PATH');
$action = htmlspecialchars( $_POST[ "action" ] );
if ( $action == "get" ) {
$files = array();
foreach ( $paths as $path){
$tmp = getfiles( $path );
if($tmp){
$files = array_merge($files,$tmp);
}
}
if ( !count($files) ) return;
rsort($files,SORT_STRING);
$str = "";
foreach ( $files as $file ) {
$str .= $file . "ue_separate_ue";
}
echo $str;
}
}
//远程抓取配置区
public function getRemoteImage() {
//远程抓取图片配置
$config = array(
"savePath" => C('IMAGE_SAVE_PATH').'/' , //保存路径
"allowFiles" => C('IMAGE_ALLOW_FILES') , //文件允许格式
"maxSize" => C('IMAGE_MAX_SIZE') //文件大小限制,单位KB
);
$uri = htmlspecialchars( $_POST[ 'upfile' ] );
$uri = str_replace( "&" , "&" , $uri );
getRemoteImage( $uri,$config );
}
//涂鸦
public function scrawlUp() {
//上传配置
$config = array(
"savePath" => C('IMAGE_SAVE_PATH').'/' , //存储文件夹
"maxSize" => C('IMAGE_MAX_SIZE'), //允许的文件最大尺寸,单位KB
"allowFiles" => C('IMAGE_ALLOW_FILES') //允许的文件格式
);
//临时文件目录
$tmpPath = C('IMAGE_SAVE_PATH')."/tmp/";
//获取当前上传的类型
$action = htmlspecialchars( $_GET[ "action" ] );
if ( $action == "tmpImg" ) { // 背景上传
//背景保存在临时目录中
$config[ "savePath" ] = $tmpPath;
$up = new \Org\Util\Uploader( "upfile" , $config );
$info = $up->getFileInfo();
/**
* 返回数据,调用父页面的ue_callback回调
*/
echo "<script>parent.ue_callback('" . $info[ "url" ] . "','" . $info[ "state" ] . "')</script>";
} else {
//涂鸦上传,上传方式采用了base64编码模式,所以第三个参数设置为true
$up = new \Org\Util\Uploader( "content" , $config , true );
//上传成功后删除临时目录
if(file_exists($tmpPath)){
delDir($tmpPath);
}
$info = $up->getFileInfo();
echo "{'url':'" . $info[ "url" ] . "',state:'" . $info[ "state" ] . "'}";
}
}
//上传文件与媒体
public function fileUp() {
//上传配置
$config = array(
"savePath" => C('FILE_SAVE_PATH').'/' , //保存路径
"allowFiles" => C('FILE_ALLOW_FILES') , //文件允许格式
"maxSize" => C('FILE_MAX_SIZE'), //文件大小限制,单位KB
"fileNameFormat" => $_POST['fileNameFormat']
);
$this->ueUp($config);
}
//视频
public function getMovie() {
$key =htmlspecialchars($_POST["searchKey"]);
$type = htmlspecialchars($_POST["videoType"]);
$html = file_get_contents('http://api.tudou.com/v3/gw?method=item.search&appKey=myKey&format=json&kw='.$key.'&pageNo=1&pageSize=20&channelId='.$type.'&inDays=7&media=v&sort=s');
echo $html;
}
private function ueUp($config) {
//生成上传实例对象并完成上传
$up = new \Org\Util\Uploader( "upfile" , $config );
/**
* 得到上传文件所对应的各个参数,数组结构
* array(
* "originalName" => "", //原始文件名
* "name" => "", //新文件名
* "url" => "", //返回的地址
* "size" => "", //文件大小
* "type" => "" , //文件类型
* "state" => "" //上传状态,上传成功时必须返回"SUCCESS"
* )
*/
$info = $up->getFileInfo();
/**
* 向浏览器返回数据json数据
* {
* 'url' :'a.rar', //保存后的文件路径
* 'fileType' :'.rar', //文件描述,对图片来说在前端会添加到title属性上
* 'original' :'编辑器.jpg', //原始文件名
* 'state' :'SUCCESS' //上传状态,成功时返回SUCCESS,其他任何值将原样返回至图片上传框中
* }
*/
echo '{"url":"' .$info[ "url" ] . '","fileType":"' . $info[ "type" ] . '","original":"' . $info[ "originalName" ] . '","state":"' . $info["state"] . '"}';
}
}
?>可以正常上传图片、在线管理图片、远程抓去图片,但是不能上传附件。问题详情:
火狐浏览器版本28.0、IE8版本8.0.7601.17514,上传附件过程中提示302网络错误,原因可能因为session_id()问题
谷歌浏览器版本 31.0.1650.63 m,可以正常上传附件文件,并保存
在Ueditor文件中attachment.html中有
post_params:{"PHPSESSID":"<?php echo session_id(); ?>","fileNameFormat": editor.options.fileNameFormat}, //解决session丢失问题但是好像没有起作用,求解决办法 最佳答案