今天项目中需要自定义图片上传的保存路径,并且不需要按照日期自动创建存储文件夹和文件名,我的ueditor版本是1.3.6。下面记录一下我配置成功的方法,如果有什么不对的地方欢迎指出,共同学习:
1:我在本地项目的根目录下新建一个文件夹,比如:upload。
2:打开ueditor/php/config.php,改成如下代码后保存:
<?php return array( //图片上传允许的存储目录
/*'imageSavePath' => array (
'upload1', 'upload2/'
)*/
//图片上传允许的存储目录,可配置多个,我这里配置的是到根目录下的upload文件夹
'imageSavePath' => array (
'../../upload'
)
);
3:打开ueditor/php/imageUp.php,加入将../../去掉的代码:
找到:$info = $up->getFileInfo(); 在这后面加入下面代码: $info["url"]=str_replace('../../','',$info["url"]); //将../../替换掉。
4:打开ueditor/php/Uploader.class.php,这一步将修改按照日期自动创建存储文件夹的代码,修改后将不会自动生成日期文件夹:
/**
* 按照日期自动创建存储文件夹
* @return string
*/
private function getFolder()
{
$pathStr = $this->config[ "savePath" ];
if ( strrchr( $pathStr , "/" ) != "/" ) {
$pathStr .= "/";
}
//$pathStr .= date( "Ymd" ); //将这行代码注释掉
if ( !file_exists( $pathStr ) ) {
if ( !mkdir( $pathStr , 0777 , true ) ) {
return false;
}
}
return $pathStr;
}
这里遇到一个问题:上传后路径upload后面多了一个“/”,比如:/ueditor/php/upload//1396072919176817.jpg。要去掉这个/,修改如下代码:
private function upFile( $base64 )
{
...
//找到这行代码(大概在103行):
$this->fullName = $this->getFolder() . '/' . $this->getName(); //将上面这行中的代码修改成下面这样,去掉/:
$this->fullName = $this->getFolder() . $this->getName();
}
5:打开ueditor/ueditor.all.min.js,这步将格式化上传文件名,先搜索“fileNameFormat”:
将fileNameFormat:"{time}{rand:6}"} 改成:fileNameFormat:"{filename}"} //格式化字符串的参数
{filename} //会替换成文件名
{rand:6} //会替换成随机数,后面的数字是随机数的位数
{time} //会替换成时间戳
{yyyy} //会替换成四位年份
{yy} //会替换成两位年份
{mm} //会替换成两位月份
{dd} //会替换成两位日期
{hh} //会替换成两位小时
{ii} //会替换成两位分钟
{ss} //会替换成两位秒 //例子:
//配置项为:
//fileNameFormat = "{yyyy}-{mm}-{dd}_{rand:4}_{filename}"
//上传的文件名可能是这样:
//"2013-12-16_7126_照片.jpg" //配置项为:
//fileNameFormat = "{time}_{rand:5}"
//上传的文件名可能是这样:
//"1387191121817_29461.jpg"
6:打开ueditor/ueditor.config.js,找到34行左右:
//,imagePath:URL + "php/" //图片修正地址,引用了fixedImagePath,如有特殊需求,可自行配置
//将上面的改成(这里是相对路径,可根据你自己需求修改):
,imagePath:"/"
好了,刷新上传的框架,测试上传看看吧,效果如图: