無懼上傳類v2.2的一個BUG

    建站中,使用了“無懼上傳類 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

 

    進行了這樣的修改,再運行就沒有問題了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章