广

织梦CMS教程

  • 帝国cms教程
  • 织梦CMS教程
  • PHP CMS教程
  • ECSHOP教程
  • WordPress教程
  • Discuz教程
  • CMS学习

    DEDECMS图片集上传图片时出错显示(FILEID)的解决办法

    2018-04-02 20:45:56 次阅读 稿源:互联网
    广告

    找到提示出错的相关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. } catch (ex) { 
    15.   this.debug(ex); 

    其中:

    1. 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.  
    5. if (isset($_GET['dir'])){ //config the basedir 
    6. $basedir=$_GET['dir']; 
    7. }else{ 
    8. $basedir = '.'
    9.  
    10. $auto = 1
    11.  
    12. checkdir($basedir); 
    13.  
    14. function checkdir($basedir){ 
    15. if ($dh = opendir($basedir)) { 
    16.   while (($file = readdir($dh)) !== false) { 
    17.    if ($file != '.' && $file != '..'){ 
    18.     if (!is_dir($basedir."/".$file)) { 
    19.      echo "filename: $basedir/$file "; 
    20.      echo checkBOM("$basedir/$file")." <br>"; 
    21.     }else{ 
    22.      $diame = $basedir."/".$file; 
    23.      checkdir($diame); 
    24.     } 
    25.    } 
    26.   } 
    27. closedir($dh); 
    28.  
    29. function checkBOM ($filename) { 
    30. global $auto; 
    31. $contents = file_get_contents($filename); 
    32. $charset[1] = substr($contents, 0, 1); 
    33. $charset[2] = substr($contents, 1, 1); 
    34. $charset[3] = substr($contents, 2, 1); 
    35. if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) { 
    36.   if ($auto == 1) { 
    37.    $rest = substr($contents, 3); 
    38.    rewrite ($filename, $rest); 
    39.    retu ("<font color=red>BOM found, automatically removed.</font>"); 
    40.   } else { 
    41.    retu ("<font color=red>BOM found.</font>"); 
    42.   } 
    43. else retu ("BOM Not Found."); 
    44.  
    45. function rewrite ($filename, $data) { 
    46. $filenum = fopen($filename, "w"); 
    47. flock($filenum, LOCK_EX); 
    48. fwrite($filenum, $data); 
    49. fclose($filenum); 
    50. ?>保存为a.php,放在网站根目录访问下就可以了。 
    51.  
    52. ps:如果在访问a.php的时候报错如: 
    53.  
    54. PHP Fatal error: Allowed memory size of 134217728 bytes exhausted 
    55.  
    56. 那就试用下面的修改版检查出有bom的文件自己修改吧 
    57.  
    58. <?php 
    59. //remove the utf-8 boms 
    60. //by magicbug at gmail dot com 
    61.  
    62. if (isset($_GET['dir'])){ //config the basedir 
    63. $basedir=$_GET['dir']; 
    64. }else{ 
    65. $basedir = '.'
    66.  
    67. $auto = 1
    68.  
    69. checkdir($basedir); 
    70. echo ("<br><br><font color=green>completed!</font><br>"); 
    71.  
    72. function checkdir($basedir) 
    73. if ($dh = opendir($basedir))  
    74.   while (($file = readdir($dh)) !== false)  
    75.   { 
    76.    if ($file != '.' && $file != '..') 
    77.    { 
    78.     if (!is_dir($basedir."/".$file))  
    79.     { 
    80.      //echo "filename: $basedir/$file "; 
    81.      checkBOM("$basedir/$file"); 
    82.     } 
    83.     else 
    84.     { 
    85.      $diame = $basedir."/".$file; 
    86.      checkdir($diame); 
    87.     } 
    88.    } 
    89.   } 
    90.   closedir($dh); 
    91.  
    92.  
    93. function checkBOM ($filename) { 
    94. global $auto; 
    95. $contents = file_get_contents($filename,NULL,NULL,0,10); 
    96. $charset[1] = substr($contents, 0, 1); 
    97. $charset[2] = substr($contents, 1, 1); 
    98. $charset[3] = substr($contents, 2, 1); 
    99. if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) { 
    100.   if ($auto == 1) { 
    101.    //$rest = substr($contents, 3); 
    102.    //rewrite ($filename, $rest); 
    103.    echo ($filename."--------"."<font color=red>BOM found</font><br>"); 
    104.   } else { 
    105.    //retu ("<font color=red>BOM found.</font>"); 
    106.   } 
    107. //else retu ("BOM Not Found."); 
    108.  
    109. function rewrite ($filename, $data) { 
    110. $filenum = fopen($filename, "w"); 
    111. flock($filenum, LOCK_EX); 
    112. fwrite($filenum, $data); 
    113. fclose($filenum); 
    114. ?> 

     

     

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告