网站地图    收藏   

主页 > 后端 > dedecms >

DeDeCMS v5后台上传图片时出现错误的解决方法

来源:未知    时间:2015-03-26 09:07 作者:xxadmin 阅读:

[导读] 使用DeDe CMS v5.5的网站在后台上传图片时出现错误,作为web生手的我很是迷茫。印象里之前并没有做什么改动,于是百思不得其解,Google、百度、DeDe官网搜索了一大圈,发现有这个问题的人不...

使用DeDe CMS v5.5的网站在后台上传图片时出现错误,作为web生手的我很是迷茫。印象里之前并没有做什么改动,于是百思不得其解,Google、百度、DeDe官网搜索了一大圈,发现有这个问题的人不少,但是没有一个给出解决的办法,只好自己试着分析分析……

找到提示出错的相关js文件:/dede/handlers.js

发现有这么一段:

  1. function uploadSuccess(file, serverData) { 
  2. try { 
  3.   var progress = new FileProgress(file,  this.customSettings.upload_target); 
  4.   if (serverData.substring(0, 7) === "FILEID:") { 
  5.    addImage("swfupload.php?dopost=thumbnail&id=" + serverData.substring(7), serverData.substring(7)); 
  6.    progress.setStatus("获取缩略图..."); 
  7.    progress.toggleCancel(false); 
  8.   } else { 
  9.    addImage("img/error.gif", 0); 
  10.    progress.setStatus("有错误!"); 
  11.    progress.toggleCancel(false); 
  12.    alert(serverData); 
  13.   } 
  14.  
  15. } catch (ex) { 
  16.   this.debug(ex); 

其中:if (serverData.substring(0, 7) === "FILEID:") 这句的判断为假导致如上图的问题.

查看serverData的值没有发现什么异常,但是判断始终为假,问题就出在serverData.substring(0, 7) 始终都不等于"FILEID:",调整了截取边界也一样有错,于是乎,请来了HttpAnalyzer一看,哦,原来如此.

虽然这么看着没什么问题,但实际问题在这,前面多了三个字节:ef bb bf,大致一找原来这是utf-8的bom问题,是修改文件时在文件头自动加入的这三个字节导致的连锁反应.

但是那么多文件要找出是哪个文件的问题倒是有点头大,后来找到一篇文章《转两篇 移除PHP中BOM的方法》按照其中给出的清除BOM的代码解决了这个问题,代码如下:

  1. <?php 
  2. //remove the utf-8 boms 
  3. //by magicbug at gmail dot com 
  4. if (isset($_GET['dir'])){ //config the basedir 
  5. $basedir=$_GET['dir']; 
  6. }else
  7. $basedir = '.'
  8. $auto = 1; 
  9. checkdir($basedir); 
  10. function checkdir($basedir){ 
  11. if ($dh = opendir($basedir)) { 
  12.   while (($file = readdir($dh)) !== false) { 
  13.    if ($file != '.' && $file != '..'){ 
  14.     if (!is_dir($basedir."/".$file)) { 
  15.      echo "filename: $basedir/$file "
  16.      echo checkBOM("$basedir/$file")." <br>"
  17.     }else//开源软件:phpfensi.com 
  18.      $dirname = $basedir."/".$file
  19.      checkdir($dirname); 
  20.     } 
  21.    } 
  22.   } 
  23. closedir($dh); 
  24. function checkBOM ($filename) { 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论