今天项目中需要自定义图片上传的保存路径,并且不需要按照日期自动创建存储文件夹和文件名,我的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:"/"
好了,刷新上传的框架,测试上传看看吧,效果如图: