WP插件Watermark Reloaded上传非图片文件出错修改

时间:2012-03-05 20:12:13 

今天在检查博客附件的时候发现有以前上传的一个注册表导入脚本reg文件丢了,重新上传的时候居然报错了。

仔细看了才发现是之前安装的Watermark_Reloaded插件导致的错误,没多想,打开插件源代码看看原因,因为小博不是专注PHP的(不过今天发现PHP的语法跟Java很是相似啊),所以没那么快找到原因,后来分析可能是因为上传了非图片文件,而Watermark_Reloaded又针对所以上传的附件进行检查并加水印,所以会导致程序出错。

错误提示

知道原因解决起来就很简单了,通篇看下来,发现错误的根源是出在doWatermark这个函数里面,这里在对附件进行加水印的操作前根本没有判断是不是图片附件,也许国外人就只上传图片附件,不传其他的吧,这里也不再深究了。

修改办法也很简单,函数默认获取了文件的mime_type,函数如下

public function doWatermark($filepath) {$mime_type = wp_check_filetype($filepath);$mime_type = $mime_type['type'];$options = $this->get_options();$image = $this->getImageResource($filepath, $mime_type);$this->imageAddText($image, $options);return $this->saveImageFile($image, $mime_type, $filepath);}

文件类型的具体返回值不大清楚,于是在$mime_type = $mime_type['type'];这一句获取文件类型后面打印了下,发现是image\jpeg2822之类的,这样就好办了,图片文件肯定都包含image字样,于是我就在$options = $this->get_options();前面加入if判断语句,小博是很久没碰php了,还只是停留在基础的了解阶段,因此对php函数不是很熟悉,查了w3c的手册,一开始用了substr截取mime前五个字符与字符串image进行比较,发现不能正确加水印,可能mime返回值不是字符串或者有空格什么的,总之和image不是相等的,无奈这里就直接不用这个了,换个思路,检查mime里面是否包含image,依然查手册,最后使用了strstr函数,修改函数如下

public function doWatermark($filepath) {$mime_type = wp_check_filetype($filepath);$mime_type = $mime_type['type'];if(strstr($mime_type,"image")){$options = $this->get_options();$image = $this->getImageResource($filepath, $mime_type);$this->imageAddText($image, $options);return $this->saveImageFile($image, $mime_type, $filepath);}}

为了便于读者查看,我将原程序复制过来删除了作者的注释,这里其实只用添加一句,在“$options = $this->get_options();”这句前面加入“if(strstr($mime_type,"image")){”,在最后再多加一个“}”即可。

其实插件已经很火了,出现这个错误也不是致命的,虽然报错但传文件不受影响,不知道是因为其他网友都不传图片文件之外的文件,还是怎么,在百度、谷歌无果后只有自己修改了,小小经验,希望大家批评指教!

固定链接:http://www.poorren.com/auto-watermark-reloaded-error/

标签:Watermark,Reloaded,上传,图片,
0
投稿

猜你喜欢

  • 美国主机Godaddy购买空间详细图文教程

    2010-04-07 09:11:00
  • 选购国外虚拟主机的五点经验

    2010-03-23 12:40:00
  • 服务器管理容易犯的十大错误

    2012-02-25 19:49:06
  • 做好以下这些你的关键词就会有很好的排名

    2009-01-08 00:36:00
  • 警告1909无法创建快捷方式VMware Workstation Pro.Ink的图文解决方法(附 VMware_workstation 12的安装方法)

    2023-05-20 02:16:27
  • Godaddy:管理帐户如何变更 Godaddy

    2010-04-20 12:40:00
  • Vista系统下IIS的HTTP 500错误解决办法

    2008-12-22 08:37:00
  • 简单解析Linux系统防火墙框架

    2009-07-12 09:26:00
  • Google Analytics统计Google Adsense试用

    2008-11-20 13:10:00
  • 滚动 docker 中的 nginx 日志思路详解

    2021-08-30 08:08:52
  • 九城涉嫌信息披露不及时 在美遭遇第四起诉讼

    2009-10-30 08:45:00
  • 消息称谷歌Chrome操作系统本周三正式发布

    2009-11-16 08:18:00
  • 如何保护虚拟机环境下的数据安全

    2009-01-23 17:05:00
  • 做个有技术的站长 将你的创意转化为现实

    2009-03-05 13:51:00
  • 如何优雅地删除 Linux 中的垃圾文件的方法

    2023-08-05 02:42:55
  • SEO优化手册之(2):关键词选取

    2009-02-26 16:57:00
  • 健康类网站该如何去推广

    2009-05-05 16:06:00
  • 10个关于选择完美cms系统的简易指导

    2010-03-09 13:25:00
  • Google AdSense 付款详解

    2007-09-08 08:43:00
  • 谈谈眼动研究的一些作用

    2009-11-28 16:19:00
  • asp之家 网站运营 m.aspxhome.com