最近要给单位的网站增加一个前台上传的功能,原本PHPCMS v9没有单文件上传的字段,后来根据这个帖子中提供的资源成功添加,对字段作者表示感谢(同时直接在此进行备份:点击此处下载UTF8版本.,GBK版本用户手工转一下码就可以)。
由于上传功能使用了表单向导,于是将该字段移植到了module formguide的fields里,但是每次上传文件都出现一个alert,内容只有简单的「undefined」一行,虽然文件正常上传了,但上传的dialog里没有成功上传的项目,表单中也不能出现上传的文件路径,打开PHP错误日志也一无所获,经过一番查找,最后用这个帖子的14楼回复解决了问题:
确定网站设置里是否有你上传的文件格式。如果没有,请增加,就不会出现错误了。
将所需的格式添加到设置-站点管理-对应的站点设置中【附件设置】允许上传的文件格式里,确实可以上传了。
追根溯源,在phpcms\modules\attachment\attachments.php中大约47行起的function swfupload()中有这样一路判断:
$site_allowext = $site_setting[‘upload_allowext’];
$allowext_array = explode(‘|’,$site_allowext);
if(!in_array($attachment->uploadedfiles[0][‘fileext’],$allowext_array)) exit(‘0’);
由此可见站点允许上传的文件类型是受站点设置中的附件设置控制的。
关于出现undefined的alert这个问题还有另外一个解决方案,似乎出现的原因是只有IE可以正常上传,其它浏览器(包括以IE为核心的各类浏览器Shell)都出现undefined的问题,一并附上解决方案:
仍然是phpcms\modules\attachment\attachments.php中的function swfupload(),在//判断是否登录 下面,将:
if(empty($this->userid))
修改为
if(empty($_POST[‘userid’])
即可。
注:所有评论将在审核通过后显示,请不要在评论内容的任何位置出现链接,否则您的评论将被自动移入回收站,且永远不会被复审。
All comments will be available after being manually reviewed, please do not include any links anywhere in your comment, otherwise your comment will be automatically deleted and are not eligible for review.