百度ueditorPHP版本编辑器将图片上传到非项目根路径

868 阅读1分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情

这里记录下  百度ueditorPHP版本编辑器将图片上传到非项目根路径

通俗点解释就是:

UEditor 的页面在 a.com 下,serverUrl指向域名在 b.com 域下

这个官方文档是有介绍的:跨域上传,这个我就不废话了。

下边是链接:

http://fex.baidu.com/ueditor/#dev-crossdomain

 

说实话,我没看懂……主要是麻烦(我懒)

 

我就想,我先把图片传到A下,成功之后,再将A下的图片剪切到B下。

然后再将config.php下的imageUrlPrefix(图片访问路径前缀)修改成B的域名。

这应该是可行的吧。

嗯,实践出真知。开始我漫长的调试之路

最开始,尝试了一下move_upload_file()  函数。

结果,报错。

百度了一下 move_upload_file() 函数作用的是 HTTP POST 上传的图片。

又百度了一下。Php把一个文件复制剪切到另一个文件夹的函数还有

copy()   rename()

这两个试了一下,但是有点麻烦。copy复制成功之后,还需要删除源文件。

 

Emmmmm……这可如何是好。

这个时候,我想到了万能的linux命令。

mv /www/1.txt /aaa/   将www目录下的1.txt文件移动到aaa目录下

不多废话了,上代码

<?php
//header('Access-Control-Allow-Origin: http://www.baidu.com'); //设置http://www.baidu.com允许跨域访问
//header('Access-Control-Allow-Headers: X-Requested-With,X_Requested_With'); //设置允许的跨域header
date_default_timezone_set("Asia/Chongqing");
error_reporting(E_ERROR);
header("Content-Type: text/html; charset=utf-8");
header("Access-Control-Allow-Origin");
 
$CONFIG json_decode(preg_replace("//*[sS]+?*//"""file_get_contents("config.json")), true);
$action $_GET['action'];
 
switch ($action) {
    case 'config':
        $result =  json_encode($CONFIG);
        break;
 
    /* 上传图片 */
    case 'uploadimage':
    /* 上传涂鸦 */
    case 'uploadscrawl':
    /* 上传视频 */
    case 'uploadvideo':
    /* 上传文件 */
    case 'uploadfile':
        $result include("action_upload.php");
        break;
 
    /* 列出图片 */
    case 'listimage':
        $result include("action_list.php");
        break;
    /* 列出文件 */
    case 'listfile':
        $result include("action_list.php");
        break;
 
    /* 抓取远程文件 */
    case 'catchimage':
        $result include("action_crawler.php");
        break;
 
    default:
        $result json_encode(array(
            'state'=> '请求地址出错'
        ));
        break;
}
 
 
 
//********************************* 移动图片start ************************************

$date date("Ymd",time());
$dir "/var/www/html/aaa/public/ueditor/".$date;//目标文件夹(如果不存在,就创建)
if(!is_dir($dir)){
    mkdir($dir);
}
$a json_decode($result,true);//对上传成功之后的结果进行解析(如果图片上传成功)
if($a['url'] != null && $a['url'] != ''){
    $url "/var/www/html/bbb/public".$a['url'];//这是上传图片路径
    $new_url $dir.'/';//这是剪切目标路径
    $linux "mv ".$url.' '.$new_url;//拼接linux命令
    exec($linux);//执行命令
   
    $a['url'] = '/ueditor/'.$date.'/'.$a['title'];//给解析的结果集重新赋值
    $result json_encode($a);//再将其转成json串,输出到前台
}
//********************************* 移动图片end ************************************
 
 
 
/* 输出结果 */
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;
}

我后添加的代码都有对应的注释。将上边的路径换成你自己的应该就好用了。

注意:json_decode()  括号内需要 添加一个true,不然会报错。

有好的建议,请在下方输入你的评论

欢迎访问个人博客 guanchao.site