最近根据友情链接设计新模块的时候,发现友情链接上传图片,能上传成功但是前端无法显示,原因就是友情链接的图片上传到了uploads/flink文件夹下,而官方为了安全会对link这个词过滤,造成flink被转成了fli<x>nk,所以造成图片无法读取,这就让人很尴尬了,自己把自己给拦住了。
修复方法
1、直接把flink文件名称改了改成userup
(1)dede/friendlink_add.php 第27行
(2)/dede/friendlink_edit.php 61-62行
- $imgurl = $cfg_medias_dir."/flink";
把上面的flink改成其他名字
- $request->MoveUploadFile('logoimg', DEDEROOT.'/uploads/flink/'.$request->GetFileInfo('logoimg', 'name'));$logo = $cfg_cmspath.'/uploads/flink/'.$request->GetFileInfo('logoimg', 'name');
2、修改 /include/datalistcp.class.php去掉安全过滤
把
改成:
- $replacement = substr($ra[$i], 0, 2).'<x>'.substr($ra[$i], 2);
- $replacement = substr($ra[$i], 0, 2).substr($ra[$i], 2);
但是这也仅仅只是对路径flink的处理,如果我们上传的图片中包含中文的时候,这些模块是不进行重命名而是直接存入数据库的,这就会造成上传的图片的中文变成乱码,为了保险需要对图片名称重命名,
参考代码:
这样既可以对图片重命名,再也不用担心图片含有中文变成乱码了
- $logoimg = $request->Upfile('logoimg', '');
- $ex = $request->GetShortname('logoimg');//获取后缀
- $randname = date("Y").date("m").date("d").date("H").date("i").date("s").rand(100, 999).".".$ex;//随机命名
- if(!empty($logoimg)){
- $request->MoveUploadFile('logoimg', DEDEROOT.'/uploads/userup/'.$randname);
- $logo = $cfg_cmspath.'/uploads/userup/'.$randname;
- }
文章点评