uedit修改文件上传路劲,支持api文件接口

时间:2023-01-27 09:06:08

首先修改一个东西ueditor/ueditor.config.js

 

 serverUrl: URL + "php/controller.php" 原来
serverUrl: "http://www.zx.com/app.php?m=index&a=rich_editor_upload_one_pic" 最好使用绝对路径,因为多图上传的时候也调用的是这个

 

   控制器文件index.php 的rich_editor_upload_one_pic 方法

rich_editor_upload_one_pic 在mvc里面最好不要有权限控制,不然会有意向不到的意外

 public function rich_editor_upload_one_pic() {


date_default_timezone_set(
"Asia/chongqing");
error_reporting(E_ERROR);
header("Content-Type: text/html; charset=utf-8");
$url = SYSTEM_ROOT . '/Public/hplus/plugins/ueditor/php/config.json'; //必须读取,不然报错
$CONFIG = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents($url)), true);
$action = $_GET['action'];

switch ($action) {
case 'config':
$result = json_encode($CONFIG);
break;

/* 上传图片 */
case 'uploadimage':
$this->do_pic();

break;
/* 上传涂鸦 */
case 'uploadscrawl':
/* 上传视频 */
case 'uploadvideo':
/* 上传文件 */
case 'uploadfile':
// $result = include("action_upload.php");
$this->do_pic();
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;
}

/* 输出结果 */
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;
}
}


  public function do_pic() {

$exts = M("Config")->where("name='file_exts'")->getField("value");

$info = uploadFile('Contract', $exts, $err);
if (!$info) {
$return = array(
"state" => "FAIL", //上传状态,上传成功时必须返回"SUCCESS"
"url" => '', //返回的地址
"title" => "", //新文件名
"original" => "", //原始文件名
"type" => "", //文件类型
"size" => "" //文件大小
);
exit(json_encode($return));
}
if (C("SERVERFILE_STATUS") == 0) {
$data['url'] = $info['0']['file'];
}
else {//启用文件服务器
$data['url'] = C("SERVERFILE_URL") . $info['savepath'] . $info['savename'];
}
//必要的返回格式
$return = array(
"state" => "SUCCESS", //上传状态,上传成功时必须返回"SUCCESS"
"url" => $data['url'], //返回的地址
"title" => "", //新文件名
"original" => "", //原始文件名
"type" => "", //文件类型
"size" => "" //文件大小
);
exit(json_encode($return));
}

 

如果只是没有使用接口文件服务器,或者外网文件服务器,建议使用nfs挂载虚拟目录,这样既不用担心权限问题,也不担心性能问题,当然比如我现在这种蛋疼的情况,比较特殊

如果是本地或者nfs,需要修改上传路径,请修改php文件夹下面的config.json文件,注释很清楚

 

比如你的api接口就是支持多文件上传的那么file=name[]就是这样的,multiple="multiple"

如果你在ue里面需要用到

ueditor.all.js 的24486行

'<input id="edui_input_' + timestrap + '" type="file" accept="image/*" name="' + me.options.imageFieldName + "[]"+'" ' +  //改好的
'<input id="edui_input_' + timestrap + '" type="file" accept="image/*" name="' + me.options.imageFieldName +'" ' +   //原来的

ajaxfileupload多文件上传也会这样,但是只有html5支持

也需要 file=name[]这样