本人遇到的问题:在PHPCMS后台编辑器CKEDIT中上传图片和超链接附件时,上传文件无法限制,站点管理中限制的附件大小不超作用。 如果是自己一个人管理网站,则无所谓,上传附件时注意就行。 可单位里负责信息发布的人员经常更换,上传的图片五门八门,有PNG的,有GIF的,有JPEG的,一张图片最大有25M,不到一年,3G的网站空间就满了,真是服了。 经百度,发现最有用的资料是:http://www.wfuyu.com/biji/27201.html(文章详细内容附于文后),实际上按文中所言,直接无法上传文件,慢慢看代码,发现是少上三行,现将其方法公布如下:
将 $site_allowext = $site_setting['upload_allowext']; $attachment = new attachment($module,$catid,$siteid); $attachment->set_userid($this->userid); $a = $attachment->upload('upload',$site_allowext); if($a){ $filepath = $attachment->uploadedfiles[0]['filepath']; $fn = intval($_GET['CKEditorFuncNum']); $this->upload_json($a[0],$filepath,$attachment->uploadedfiles[0]['filename']); $attachment->mkhtml($fn,$this->upload_url.$filepath,''); }
更换为:
$site_allowext = $site_setting['upload_allowext']; $attachment = new attachment($module,$catid,$siteid); $attachment->set_userid($this->userid); $upload_maxsize= $site_setting['upload_maxsize']; $upload_maxsize_2= $upload_maxsize *1024;//系统后台文件上传单位是KB,而upload单位为B $a = $attachment->upload('upload',$site_allowext,$upload_maxsize_2); if($a){ $filepath = $attachment->uploadedfiles[0]['filepath']; $fn = intval($_GET['CKEditorFuncNum']); $this->upload_json($a[0],$filepath,$attachment->uploadedfiles[0]['filename']); $attachment->mkhtml($fn,$this->upload_url.$filepath,''); } else{ echo "上传文件太大。图片仅支持JPEG,大小不超400K。如果是其他文件,请与管理员联系。"; }
附: http://www.wfuyu.com/biji/27201.html内容:
phpcms编辑器上传图片大小控制解决办法
phpcms编辑器上传图片大小控制解决办法,重要提示,本文讲的是phpcms编辑器的图片大小限制,而不时phpcms附件上传大小限制。
首先还是给大家介绍下,phpcms附近上传大小限制的办法吧
phpcms默认的上传单个文件大小限制是2M。所以超过2M的附件上传就会上传不了。提示信息如下所示

有点同学觉得这个值太大了,或者太小,那么怎么修改呢
设置方法:
登陆phpcms后台–站点设置–修改–附件设置–允许附件大小,输入你想要的值,如下图

以上方法,大家通过百度都能找到,下面程序员人生网站首席工程师为大家讲解的是,phpcms编辑器的图片上传大小控制解决办法,由于phpcms的编辑器是用ck二次开发的,里面很多功能是高度定制,又有很多bug(真的有很多bug,以后有时间和大家一起分析)
默认phpcms编辑器上传图片大小是不限制的,如果网站带有会员系统,那就完蛋了,用户可以随意上传大小,耗费大量服务器资源

解决办法如下:
打开网站文件,根目录\phpcms\modules\attachment\attachments.php,大概在38行
将以下代码
$site_allowext = $site_setting['upload_allowext'];$attachment = new attachment($module,$catid,$siteid);$attachment->set_userid($this->userid);$a = $attachment->upload('upload',$site_allowext);if($a){$filepath = $attachment->uploadedfiles[0]['filepath'];$fn = intval($_GET['CKEditorFuncNum']);$this->upload_json($a[0],$filepath,$attachment->uploadedfiles[0]['filename']);$attachment->mkhtml($fn,$this->upload_url.$filepath,'');}
换成我这个代码
/*wlsh 20161212 新增编辑器图片上传大小控制*/ $upload_maxsize= $site_setting['upload_maxsize']; $upload_maxsize_2= $upload_maxsize *1024;//系统后台文件上传单位是KB,而upload单位为B $a = $attachment->upload('upload',$site_allowext,$upload_maxsize_2); if($a){ $filepath = $attachment->uploadedfiles[0]['filepath']; $fn = intval($_GET['CKEditorFuncNum']); $this->upload_json($a[0],$filepath,$attachment->uploadedfiles[0]['filename']); $attachment->mkhtml($fn,$this->upload_url.$filepath,''); }else{ echo ""; }
这样替换之后,刚刚第一步设计的大小,在这里也可以用了,代码解释下,只要就是在upload里面加了一个upload_maxsize参数,然后做了一个判断 |