建站中,使用了“無懼上傳類 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
進行了這樣的修改,再運行就沒有問題了。