当前位置: 首页 > news >正文

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

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

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

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

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

/dede/handlers.js

发现有这么一段:

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); } }

其中:

if (serverData.substring(0, 7) === "FILEID:")

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

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

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

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

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

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

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

后来找到一篇文章《转两篇 移除PHP中BOM的方法》按照其中给出的清除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); 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

相关文章:

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

如果遇到过这问题的&#xff0c;就可以照此方法尝试了。 某日&#xff0c;某使用deecms v5.5的网站在后台上传图片时出现如下错误&#xff1a; 作为web生手的我很是迷茫。印象里之前并没有做什么改动&#xff0c;于是百思不得其解。Google、百度、DeDe官网搜索了一大圈&#xf…...

【亲测有效】 通过mysql指令 导出数据库中表名 和 表名的备注

标题你可以使用以下MySQL指令来导出数据库中表名和表名的备注&#xff1a; SELECT table_name, table_comment FROM information_schema.tables WHERE table_schema 你的数据库名;将上述指令中的"你的数据库名"替换为你实际使用的数据库名称&#xff0c;执行该指…...

【Nginx08】Nginx学习:HTTP核心模块(五)长连接与连接处理

Nginx学习&#xff1a;HTTP核心模块&#xff08;五&#xff09;长连接与连接处理 HTTP 基础知识大家掌握的怎么样呀&#xff1f;对于长连接这一块的内容应该也不是什么新鲜东西了吧。毕竟 HTTP1.1 都已经发布这么久了。今天主要来看的就是长连接相关的配置&#xff0c;另外还会…...

第八十五天学习记录:C++核心:内存分区模型

内存分区模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域 1、代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理 2、全局区&#xff1a;存放全局变量和静态变量以及常量 3、栈区&#xff1a;由编译器自动分配释放&#xff0c;存放函数的参数…...

Chrome远程调试webview

网址 谷歌远程调试解决方案 https://blog.csdn.net/m0_56516186/article/details/131260563Chrome远程调试webview https://blog.csdn.net/weixin_44801980/article/details/117755550...

爬虫与反爬虫的攻防对抗

一、爬虫的简介 1 概念 爬虫最早源于搜索引擎&#xff0c;它是一种按照一定的规则&#xff0c;自动从互联网上抓取信息的程序&#xff0c;又被称为爬虫&#xff0c;网络机器人等。按爬虫功能可以分为网络爬虫和接口爬虫&#xff0c;按授权情况可以分为合法爬虫和恶意爬虫。恶…...

【机器学习】特征工程 - 字典特征提取

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 字典特征提取 一、特征提取API一、提取数字特征二、特征名字三、返回原始数据特征工…...

用户交互----进入游戏

一、增加交互----点击和拖动 1、点击鼠标画点的程序 设置 import pygame # Setup pygame.init() screen pygame.display.set_mode([800,600]) pygame.display.set_caption("单击画圆点") keep_going True RED (255,0,0) …...

排序算法 - 快速排序(4种方法实现)

快速排序 快速排序是啥&#xff1f;三数取中&#xff1a;1.挖坑法&#xff08;推荐掌握&#xff09;2.前后指针法&#xff08;推荐掌握&#xff09;3.左右指针法&#xff08;霍尔版本&#xff09;&#xff08;容易出错&#xff09;4.非递归实现 本篇文章的源代码在这&#xff0…...

C++入门知识点

目录 命名空间 命名空间定义 命名空间使用 法一&#xff1a;加命名空间名称及作用域限定符&#xff1a;&#xff1a; 法二&#xff1a;使用using部分展开&#xff08;授权&#xff09;某个命名空间中的成员 法三&#xff1a;使用using对整个命名空间全部展开&#xff08;授权…...

开眼界了,AI绘画商业化最强玩家是“淘宝商家”

图片来源&#xff1a;由无界AI生成 7月&#xff0c;2023世界人工智能大会在上海召开&#xff0c;顶尖的投资人、创业者都去了。 创业者吐槽&#xff1a;投我啊&#xff0c;我很强。 投资人反问&#xff1a;你的商业模式是什么&#xff1f;护城河是什么&#xff1f; 创业者投资人…...

机器学习与深度学习——自定义函数进行线性回归模型

机器学习与深度学习——自定义函数进行线性回归模型 目的与要求 1、通过自定义函数进行线性回归模型对boston数据集前两个维度的数据进行模型训练并画出SSE和Epoch曲线图&#xff0c;画出真实值和预测值的散点图&#xff0c;最后进行二维和三维度可视化展示数据区域。 2、通过…...

大屏项目也不难

项目环境搭建 使用create-vue初始化项目 npm init vuelatest准备utils模块 业务背景&#xff1a;大屏项目属于后台项目的一个子项目&#xff0c;用户的token是共享的 后台项目 - token - cookie 大屏项目要以同样的方式把token获取到&#xff0c;然后拼接到axios的请求头中…...

c#webclient请求中经常出现的几种异常

WebClient是.NET Framework提供的用于HTTP请求的类&#xff0c;如果在使用WebClient时遇到异常&#xff0c;我们可以根据具体的异常类型进行处理。 以下是一些常见的WebClient异常及其处理方法&#xff1a; System.Net.WebException WebException通常是由于请求超时、网络连…...

设计模式-原型模式

目录 一、传统方式 二、原型模式 三、浅拷贝和深拷贝 克隆羊问题&#xff1a; 现在有一只羊tom&#xff0c;姓名为: tom,年龄为: 1&#xff0c;颜色为: 白色&#xff0c;请编写程序创建和tom羊属性完全相同的10只羊。 一、传统方式 public class Client {public static vo…...

sentinel介绍-分布式微服务流量控制

官网地址 https://sentinelguard.io/ 介绍 随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自…...

基于Redisson的Redis结合布隆过滤器使用

一、场景 缓存穿透问题 一般情况下&#xff0c;先查询Redis缓存&#xff0c;如果Redis中没有&#xff0c;再查询MySQL。当某一时刻访问redis的大量key都在redis中不存在时&#xff0c;所有查询都要访问数据库&#xff0c;造成数据库压力顿时上升&#xff0c;这就是缓存穿透。…...

BrowserRouter刷新404解决方案

1、本地开发环境 在js脚本命令里加上 --history-api-fallback "scripts": {"serve": "webpack serve --config webpack.dev.js --history-api-fallback" }2、生产环境&#xff0c;可以修改 nglnx 配置&#xff1a; server {listen XXXX; //端口号…...

解决appium-doctor报opencv4nodejs cannot be found

一、下载cmake 在CMake官网下载&#xff1a;cmake-3.6.1-win64-x64.msi 二、安装cmake cmake安装过程 在安装时要选择勾选为所有用户添加CMake环境变量 三、检查cmake安装 重新管理员打开dos系统cmd命令提示符&#xff0c;输入cmake -version cmake -version四、安装opencv4no…...

安卓通过adb pull和adb push 手机与电脑之间传输文件

1.可以参考这篇文章 https://www.cnblogs.com/hhddcpp/p/4247923.html2.根据上面的文章&#xff0c;我做了如下修改 //设置/system为可读写&#xff1a; adb remount //复制手机中的文件到电脑中。需要在电脑中新建一个文件夹&#xff0c;我新建的文件夹为ce文件夹 adb pull …...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...