关于UEditor远程图片上传失败的解决办法

简介:

 因为单纯喜欢 UEditor 的界面,于是把项目中原先的编辑器进行的替换,但在后续操作中发现一些问题,就是远程图片上传。

  远程图片上传是个很有意思的东西,比如你从别的网站复制一段文件,如果文字中带有图片,编辑器会自动将图片提取出来,进行上传,从而不用担心远程图片失效后,自己本地也无法浏览。

  通过检查,发现远程图片上传的操作页面是:getRemoteImage.php 。打开后我们先配置 savePath ,因为不同用户使用,需要存放到不同的目录,以免混乱,也方便管理

  修改后代码:

//远程抓取图片配置
if (isset( $_SESSION [ 'admin' ])){
     $myPath  = 'http://www.cnblogs.com/../dofiles/ueditorUpload/admin/' . $_SESSION [ 'admin' ][ 'id' ]. '/' ;
} else  if (isset( $_SESSION [ 'user' ])){
     $myPath  = 'http://www.cnblogs.com/../dofiles/ueditorUpload/user/' . $_SESSION [ 'user' ][ 'id' ]. '/' ;
} else {
     $myPath  = 'http://www.cnblogs.com/../dofiles/ueditorUpload/unkonw/' ;
}
$config  = array (
     "savePath"  => $myPath  ,            //保存路径
     "allowFiles"  => array ( ".gif"  , ".png"  , ".jpg"  , ".jpeg"  , ".bmp"  ) , //文件允许格式
     "maxSize"  => 3000                    //文件大小限制,单位KB
);

  然后问题就来了,UEditor 里,文件、图片上传都是通过 Uploader.class.php 这个php类操作的,但远程图片上传则不是。

  我在85行发现,创建路径的时候,单纯的使用了mkdir进行来创建,因为mkdir不能创建带有层级的路径,所以导致在路径如果不存在的情况下,复制远程图片上传失败。

  知道问题处理起来就容易了,我先写一个循环创建文件目录的函数(因为之前写过,这里就直接拿来用了):

//连续创建带层级的文件夹
function  recursive_mkdir( $folder ){
     $folder  = preg_split( "/[\\\\\/]/"  , $folder  );
     $mkfolder  = '' ;
     for ( $i =0; isset( $folder [ $i ]); $i ++){
         if (! strlen (trim( $folder [ $i ]))){
             continue ;
         }
         $mkfolder  .= $folder [ $i ];
         if (! is_dir ( $mkfolder )){
             mkdir ( "$mkfolder" ,0777);
         }
         $mkfolder  .= DIRECTORY_SEPARATOR;
     }
}

  然后修改85行:

//创建保存位置
$savePath  = $config [ 'savePath'  ];
if  ( ! file_exists ( $savePath  ) ) {
     recursive_mkdir( $savePath );
     //mkdir( "$savePath" , 0777 );
}

  这样一来,就没有问题了。

  这问题也已经提交给百度官方,希望修正。

  测试UEditor版本为1.2.3.0,如果之前版本也有相关问题,按照修改思路去修改应该也可以解决。




    本文转自胡尐睿丶博客园博客,原文链接:http://www.cnblogs.com/hooray/archive/2012/08/29/2661727.html,如需转载请自行联系原作者

相关文章
|
运维 Linux Apache
Linux Apache服务详解——Apache虚拟目录与禁止显示目录列表实战
Linux Apache服务详解——Apache虚拟目录与禁止显示目录列表实战
281 2
|
9月前
|
监控 负载均衡 安全
静态IP代理与动态IP代理:提升速度与保障隐私的技术解析
本文探讨了静态IP代理和动态IP代理的特性和应用场景。静态IP代理通过高质量服务提供商、网络设置优化、定期更换IP与负载均衡及性能监控提升网络访问速度;动态IP代理则通过隐藏真实IP、增强安全性、绕过封锁和提供独立IP保障用户隐私。结合实际案例与代码示例,展示了两者在不同场景下的优势,帮助用户根据需求选择合适的代理服务以实现高效、安全的网络访问。
308 1
|
人工智能 搜索推荐 数据挖掘
未来教育行业的就业前景如何?
【8月更文挑战第4天】未来教育行业的就业前景如何?
435 1
|
NoSQL Redis
Redis分布式锁如何实现 ?
Redis分布式锁通过SETNX指令实现,确保仅在键不存在时设置值。此机制用于控制多个线程对共享资源的访问,避免并发冲突。然而,实际应用中需解决死锁、锁超时、归一化、可重入及阻塞等问题,以确保系统的稳定性和可靠性。解决方案包括设置锁超时、引入Watch Dog机制、使用ThreadLocal绑定加解锁操作、实现计数器支持可重入锁以及采用自旋锁思想处理阻塞请求。
263 16
|
存储 监控 网络安全
saltStack自动化工具
saltStack自动化工具
801 7
|
开发框架 数据挖掘 .NET
毕业论文管理系统设计与实现(论文+源码)_kaic
毕业论文管理系统设计与实现(论文+源码)_kaic
|
JavaScript
VUE element-ui之table表格全局排序、调用后端接口排序功能
VUE element-ui之table表格全局排序、调用后端接口排序功能
2241 0
|
Java 应用服务中间件 对象存储
富文本编辑器Ueditor实战(二)-图片上传
本文重点阐述了如何扩展Ueditor的图片上传功能,以及在实际中,如何根据项目实际情况,设置图片信息的动态展示思路。
1226 0
富文本编辑器Ueditor实战(二)-图片上传
|
存储 Java
Java中BigDecimal怎样取反
在上述示例中,`number.negate()`会将BigDecimal对象 `number`的值取反,并将结果存储在新的BigDecimal对象 `negated`中。
491 0
|
SQL 前端开发 JavaScript
使用ueditor实现多图片上传案例
使用ueditor实现多图片上传案例