ueditor 多目录上传
问题:在一个页面中有多个ueditor,要求每个ueditor上传的文件存到不同的路径下。
背景知识:
首先查看ueditor.config.js,这里有关于图片,文件,视频等等的上传配置,根据里面的注释可找到你需要配置的代码段
例如跟附件上传有关的:
主要是这个fileUrl,从这里可找到处理你附件上传的主要文件,如这里的fileUp.php,这个文件在你ueditor下的php文件夹里。
fileUp.php
从这个fileUp.php中看出想要修改文件上传地址就主要修改这个savePath就可以了,但修改这里并达不到我们的目的。所以要想实现每个ueditor上传的文件放在不同的文件夹里,我们可以这样做,一个是让每一个ueditor都有自己专属的处理文件,另一种方式是动态的修改这个savePath。在下面我将给大家一一介绍。
方法一:
将fileUp.php复制一份(如果你上传的不是附件的话可到ueditor.config.js中找到相关的php),然后将里面的savePath修改为你想要的地址,剩下的就是调用了。前台的调用如下
<script type="text/javascript">
var editor = UE.getEditor('你页面里ueditor的id',{
fileUrl:"专门处理这个ueditor的php文件的绝对路径,例如http://yoursite/assets/ueditor/php/UP2.php"
//更多其他参数,请参考editor_config.js中的配置项
});
</script>
方法二:
整体思路:在前台页面将想上传的地址传入处理文件(例如fileUp.php),然后在处理文件里做判断,如果接收到参数则替换掉$config里的savePath。
实施步骤:
1.前台配置
<script type="text/javascript">
var editor = UE.getEditor('responsibility-editor',{
fileRealPath:"?path=../../uploadFile/recruitEntrance/position-duty/"
//更多其他参数,请参考editor_config.js中的配置项
});
var editor = UE.getEditor('requirement-editor',{
fileRealPath:"?path=../../uploadFile/recruitEntrance/position-need/"
//更多其他参数,请参考editor_config.js中的配置项
}),
editor = UE.getEditor('other-info',{
fileRealPath:"?path=../../uploadFile/recruitEntrance/position-describe/"
//更多其他参数,请参考editor_config.js中的配置项
});
</script>
fileRealPath不是固定的,后面的path这个参数名也是可以改的。
2.修改模板文件
到ueditor/dialogs/下找到相应的模板文件,例如图片就是image/image.html,附件则是attachment/attachment.html,而视频为video/video.html,都可以根据英文找到对应的模板文件。
然后根据注释找到上传url,其值一般是以editor.options开头的。
例如attachment.html里是
upload_url:editor.options.fileUrl,
将其改为
upload_url:editor.options.fileUrl+editor.options.fileRealPath ,
这样地址就拼凑成URL+php/fileUp.php?path=../../uploadFile/recruitEntrance/position-duty
3.在处理文件里新增判断代码
在$config下面添上这两行代码
if($_GET['path'] != ''){ $config["savePath"]= $_GET['path']; }此处path对应上面url里的path,savePath对应$config里的savePath。
环境说明:Laragon1.0(Apache 2.4.17,mysql 10.1.9,Memcached 1.4.5,php 5.6.16),yii1框架,phpstorm2017.1.2