无惧上传类v2.2的一个BUG

来源:互联网 发布:手机数据漫游要不要开 编辑:程序博客网 时间:2024/05/22 13:17

    建站中,使用了“无惧上传类 v2.2”,在运行中出现这样一个问题,上传文件时提示上传成功,但文件实际上并没有传上去。然而,如果使用“无惧上传类 v1.2”的话就没有这个问题。经过对比代码,找到了问题的所在,我认为这应该是“无惧上传类 v2.2”的一个BUG。
    在UpFile_Class类的SaveToFileEx成员函数中有这样两行:
        tmpPath=Split(Path,".")(0)
        FileExt=GetFileExt(Path)
    后面判断若没有问题可以上传,则执行这样一行将文件写到本机中:
        oFileStream.SaveToFile tmpPath & "." & FileExt,2
    Path是上传的文件在本机的全路径。可以看出,作者的本意是tmpPath的值为文件本机全路径去掉扩展名和连接扩展名的“.”,这样做主要是基于安全上的考虑。然而,实际使用时路径中有一个“.”,如“D:/web/aaa.com/bbb/”,这样,tmpPath的值就是“D:/web/aaa”,这明显是错误的。出现了这样的问题依然提示上传成功的原因是SaveToFileEx函数的开头有一个“On Error Resume Next”。

 

    这样,我们对SaveToFileEx函数进行一些修改,让其先截取路径和文件名,存放于onlyPath和onlyFileName中,再对onlyFileName进行扩展名截取。将tmpPath=Split(Path,".")(0)修改为以下代码:
        for i=len(Path) to 1 step -1
            if mid(Path, i, 1) = "/" or mid(Path, i, 1) = "/" then exit for
        next
        onlyPath = left(Path, i)
        onlyFileName = right(Path, len(Path) - i)
        tmpFileName = Split(onlyFileName,".")(0)
    然后将写文件的代码改成这样:
        oFileStream.SaveToFile OnlyPath & tmpFileName & "." & FileExt,2

 

    进行了这样的修改,再运行就没有问题了。