sdcms的一个bug,总是提示,该文件不允许被上传

之前通过sdcms做过一个网站,最近在上传文件时,总是提示,该文件不允许被上传。于是跟踪了一下,发现了一个bug

上传附近是通过admin目录下的Sdcms_Editor_Up.asp来提交的,当文件名中含有.时,就会出错,如小燕子 2.53秒.rar

跟踪发现它使用的风声组件上传,在inc/upload.asp中的第166行,取文件扩展名方法

if Instr(strFnam,".")<>0 then
    strFext=Mid(strFnam,InstrRev(strFnam,".")+1)
else
    strFext=""
end if

InstrRev是取最后一次出现的位置,理论上像小燕子 2.53秒.rar这样的文件名没有问题。

再跟踪发现,它的默认编码是gb2132,Sdcms_Editor_Up.asp上传使用的编码也是bg2132,于是像小燕子 2.53秒.rar这样的文件名,就会变成乱码,如****.?*rar这样的,取到的扩展名是?*rar,所以程序报错,总是提示,该文件不允许被上传。

将上传编码改成utf-8,问题解决(UpLoad.Charset="utf-8")。

原文地址:https://www.cnblogs.com/chendaoyin/p/3007225.html