首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >dede图片集上传图片时出错显示FILEID的解决办法

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

作者头像
用户1088318
发布于 2025-05-21 02:31:03
发布于 2025-05-21 02:31:03
8100
代码可运行
举报
运行总次数:0
代码可运行

如果遇到过这问题的,就可以照此方法尝试了。

某日,某使用deecms v5.5的网站在后台上传图片时出现如下错误:

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

找到提示出错的相关js文件:

/dede/handlers.js

发现有这么一段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function uploadSuccess(file, serverData) {
try {
  var progress = new FileProgress(file,  this.customSettings.upload_target);
  if (serverData.substring(0, 7) === "FILEID:") {
   addImage("swfupload.php?dopost=thumbnail&id=" + serverData.substring(7), serverData.substring(7));
   progress.setStatus("获取缩略图...");
   progress.toggleCancel(false);
  } else {
   addImage("img/error.gif", 0);
   progress.setStatus("有错误!");
   progress.toggleCancel(false);
   alert(serverData);
  }
      
} catch (ex) {
  this.debug(ex);
}
}

其中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (serverData.substring(0, 7) === "FILEID:")

这句的判断为假导致如上图的问题。

查看serverData的值没有发现什么异常,但是判断始终为假

问题就出在serverData.substring(0, 7) 始终都不等于"FILEID:"

调整了截取边界也一样有错,于是乎,请来了HttpAnalyzer一看,哦,原来如此:

虽然这么看着没什么问题,但实际问题在这:前面多了三个字节:ef bb bf

大致一找原来这是utf-8的bom问题,是修改文件时在文件头自动加入的这三个字节导致的连锁反应

但是那么多文件要找出是哪个文件的问题倒是有点头大……

后来找到一篇文章《转两篇 移除PHP中BOM的方法》按照其中给出的清除BOM的代码解决了这个问题

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
//remove the utf-8 boms
//by magicbug at gmail dot com
if (isset($_GET['dir'])){ //config the basedir
$basedir=$_GET['dir'];
}else{
$basedir = '.';
}
$auto = 1;
checkdir($basedir);
function checkdir($basedir){
if ($dh = opendir($basedir)) {
  while (($file = readdir($dh)) !== false) {
   if ($file != '.' && $file != '..'){
    if (!is_dir($basedir."/".$file)) {
     echo "filename: $basedir/$file ";
     echo checkBOM("$basedir/$file")." <br>";
    }else{
     $dirname = $basedir."/".$file;
     checkdir($dirname);
    }
   }
  }
closedir($dh);
}
}
function checkBOM ($filename) {
global $auto;
$contents = file_get_contents($filename);
$charset[1] = substr($contents, 0, 1);
$charset[2] = substr($contents, 1, 1);
$charset[3] = substr($contents, 2, 1);
if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
  if ($auto == 1) {
   $rest = substr($contents, 3);
   rewrite ($filename, $rest);
   return ("<font color=red>BOM found, automatically removed.</font>");
  } else {
   return ("<font color=red>BOM found.</font>");
  }
}
else return ("BOM Not Found.");
}
function rewrite ($filename, $data) {
$filenum = fopen($filename, "w");
flock($filenum, LOCK_EX);
fwrite($filenum, $data);
fclose($filenum);
}
?>保存为a.php,放在网站根目录访问下就可以了。
ps:如果在访问a.php的时候报错如:
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted
那就试用下面的修改版检查出有bom的文件自己修改吧
<?php
//remove the utf-8 boms
//by magicbug at gmail dot com
if (isset($_GET['dir'])){ //config the basedir
$basedir=$_GET['dir'];
}else{
$basedir = '.';
}
$auto = 1;
checkdir($basedir);
echo ("<br><br><font color=green>completed!</font><br>");
function checkdir($basedir)
{
if ($dh = opendir($basedir))
{
  while (($file = readdir($dh)) !== false)
  {
   if ($file != '.' && $file != '..')
   {
    if (!is_dir($basedir."/".$file))
    {
     //echo "filename: $basedir/$file ";
     checkBOM("$basedir/$file");
    }
    else
    {
     $dirname = $basedir."/".$file;
     checkdir($dirname);
    }
   }
  }
  closedir($dh);
}
}
function checkBOM ($filename) {
global $auto;
$contents = file_get_contents($filename,NULL,NULL,0,10);
$charset[1] = substr($contents, 0, 1);
$charset[2] = substr($contents, 1, 1);
$charset[3] = substr($contents, 2, 1);
if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
  if ($auto == 1) {
   //$rest = substr($contents, 3);
   //rewrite ($filename, $rest);
   echo ($filename."--------"."<font color=red>BOM found</font><br>");
  } else {
   //return ("<font color=red>BOM found.</font>");
  }
}
//else return ("BOM Not Found.");
}
function rewrite ($filename, $data) {
$filenum = fopen($filename, "w");
flock($filenum, LOCK_EX);
fwrite($filenum, $data);
fclose($filenum);
}
?>

本文链接:https://jinmengqiang.cn/a/202107/2.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
如何设计一个高并发系统?
如果并发访问系统的用户非常多,每次用户访问页面的时候,都通过服务器动态渲染,会导致服务端承受过大的压力,而导致页面无法正常加载的情况发生。
苏三说技术
2023/09/10
9720
如何设计一个高并发系统?
亿级流量架构之服务降级思路与方法
1 什么是服务降级? 如果看过我前面对服务限流的分析,理解服务降级就很容易了,对于一个景区,平时随便进出,但是一到春节或者十一国庆这种情况客流量激增,那么景区会限制同时进去的人数,这叫
iginkgo18
2021/12/01
7400
高并发之降级
在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。之前已经有一些文章介绍过缓存和限流了。本文将详细聊聊降级。
lyb-geek
2018/07/26
2K0
缓存中的这7个坑,把我坑惨了!!!
这篇文章总结了我工作中使用缓存遇到过的7个坑,还是非常有参考价值得,希望对你会有所帮助。
苏三说技术
2024/05/01
1860
大型电商网站的页面静态化方案是如何支撑亿级流量的?
我们小伙伴们在访问淘宝、网易等大型网站时有没有考虑到,网站首页、商品详情页以及新闻详情页面是如何处理的?怎么能够支撑这么大流量的访问呢?
lyb-geek
2019/11/21
1.4K0
大型电商网站的页面静态化方案是如何支撑亿级流量的?
BAT 大厂的大型网站页面静态化你了解吗?
我们小伙伴们在访问淘宝、网易等大型网站时有没有考虑到,网站首页、商品详情页以及新闻详情页面是如何处理的?怎么能够支撑这么大流量的访问呢?
业余草
2019/10/24
1.1K0
你了解大型网站的页面静态化吗?
我们小伙伴们在访问淘宝、网易等大型网站时有没有考虑到,网站首页、商品详情页以及新闻详情页面是如何处理的?怎么能够支撑这么大流量的访问呢?
猿天地
2019/06/19
5.9K0
美多商城商品部分(三)
Our greatest weakness lies in giving up. The most certain way to succeed is always to try just one more time.
小闫同学啊
2019/07/18
4570
美多商城商品部分(三)
电商详情页缓存架构(一)电商网站的商品详情页架构
https://blog.csdn.net/weixin_42868638/article/details/112306133
chenchenchen
2021/09/06
1.2K0
4918字,详解商品系统的存储架构设计
电商的商品系统所包含的主要功能就是增、删、改、查商品信息,业务逻辑比较简单,支撑的主要页面就是商品详情页。尽管如此,在设计商品系统的存储架构时,仍然需要着重考虑如下两个方面的问题。
IT阅读排行榜
2022/04/14
9140
4918字,详解商品系统的存储架构设计
认识高性能Web缓存体系,你需要知道这些
前言 我们再看知识体系的时候,我们学一个东西的时候,每次我们都回过头去看一看,这就是所谓的不忘初心。这个说着容易做起来难,当一个人慢慢在成长,在进步的时候,是很难做到不忘初心的。 我们之前说了DNS缓存、浏览器缓存(维护了这么久的服务器,你真的认识 Web 缓存体系?),所以浏览器就是我们安排在千家万户缓存代理服务器,你把浏览器缓存用好,性能就不用说。 为什么这么说?如果遇到关于session或cookie的过期时间这样的问题,浏览器都不会向服务器发送连接请求。它直接用浏览器本地缓存就打开了,你说它快还是不
DevOps时代
2018/02/02
1.6K0
认识高性能Web缓存体系,你需要知道这些
vivo 全球商城:商品系统架构设计与实践
随着用户量级的快速增长,vivo官方商城v1.0的单体架构逐渐暴露出弊端:模块愈发臃肿、开发效率低下、性能出现瓶颈、系统维护困难。
2020labs小助手
2021/11/08
1K0
商城项目-页面静态化
现在,我们的页面是通过Thymeleaf模板引擎渲染后返回到客户端。在后台需要大量的数据查询,而后渲染得到HTML页面。会对数据库造成压力,并且请求的响应时间过长,并发能力不高。
cwl_java
2020/02/11
1.9K0
美多商城项目(六)
Never let success get to your head, and never let failure get to your heart.
小闫同学啊
2019/07/18
1.2K0
美多商城项目(六)
从2s优化到0.1s,我用了这5步
我们的网站使用了SpringBoot推荐的模板引擎:Thymeleaf,进行动态渲染。
苏三说技术
2024/09/29
1490
从2s优化到0.1s,我用了这5步
项目的亮点和难点及问题解决
在高并发情况下的秒杀优化,我们知道当并发数达到一定量的时候,会对数据库服务器带来很大的压力,那么如何缓解这些压力以及提高并发的QPS就是整个项目的解决重点,也是我们优化系统的目标。
golangLeetcode
2022/08/02
1.6K0
分类树,我从2s优化到0.1s
我们的网站使用了SpringBoot推荐的模板引擎:Thymeleaf,进行动态渲染。
苏三说技术
2023/08/17
2880
分类树,我从2s优化到0.1s
Java电商系统商品详情页存储方案设计
不管什么电商系统,商品详情页一定是整个系统中日均访问次数最高的页面之一.不难理解,用户购物,看商品详情不一定买,一定会看好多商品详情页货比三家.如果在设计存储时,没有考虑到并发,on sale 时,支撑商详页的商品系统必然是第一个被流量冲垮的系统
JavaEdge
2020/05/27
2.8K0
Java电商系统商品详情页存储方案设计
PHP中9大缓存技术总结
[导读] 1、全页面静态化缓存也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程。此种方式,在CMS系统中比较常见,比如dedecms;一种比较常用的实现方式是用输出缓存:Ob 1、全页面静态化缓存 也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程。此种方式,在CMS系统中比较常见,比如dedecms; 一种比较常用的实现方式是用输出缓存: Ob_start()******要运行的代码*******$co
wangxl
2018/03/08
1.7K0
PHP中9大缓存技术总结
页面静态化,让你的系统快的飞起来
静态化就是指把原本动态生成的html页面变为静态内容保存,用户客户端请求的时候,直接返回静态页面,不用再经过服务渲染,不用访问数据库,可以大大的减小数据库的压力,显著的提高性能。
故里
2020/12/08
8050
页面静态化,让你的系统快的飞起来
相关推荐
如何设计一个高并发系统?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档