我有以下代码:
Public Sub Save(path)
Dim streamFile, fileItem, filePath, allowedExtensions
allowedExtensions = ".jpg, .gif, .png, .zip, .7z, .exe, .bmp, .pdf, .doc, .docx"
if Right(path, 1) <> "\" then path = path & "\" '"
if not uploadedYet then Upload
For Each fileItem In UploadedFiles.Items
Dim MyArray, extension
MyArray = Split(fileItem, ".")
extension = MyArray(UBound(MyArray)-1)
'' # var extension = UCase(right(fileItem.FileName,5,);
if(allowedExtensions.Contains(extension)) then
filePath = path & fileItem.FileName
Set streamFile = Server.CreateObject("ADODB.Stream")
streamFile.Type = adTypeBinary
streamFile.Open
StreamRequest.Position=fileItem.Start
StreamRequest.CopyTo streamFile, fileItem.Length
streamFile.SaveToFile filePath, adSaveCreateOverWrite
streamFile.close
Set streamFile = Nothing
fileItem.Path = filePath
end if
Next
End Sub
我似乎无法理解这一行:
MyArray = Split(fileItem, ".")
浏览器告诉我:
Microsoft VBScript运行时错误“800a01b6”
Object不支持此属性或方法
/up/freeaspupload.asp,第90行
我向上看,它表明你就是这样做的。
任何人都有任何想法我做错了什么或解决这个问题?
我只想允许上传某些扩展程序。
答案 0 :(得分:4)
在VBScript中,原始类型没有内置方法。因此, allowedExtensions 不能使用Contains
方法。我想这就是错误发生的原因。第MyArray = Split(fileItem, ".")
行正确且清晰。
if(allowedExtensions.Contains(extension))then
您可以使用InStr搜索其他字词。
'For case insensitive search
If InStr(1, BeingSearched, SearchedFor, vbTextCompare) Then
'Contains
End If
答案 1 :(得分:2)
Kul-Tigin发现了你的代码的另一个问题,一旦你遇到了这个问题实际上存在的Split问题,你就会崩溃。你的Split函数失败的原因我怀疑它应该是这样的:
MyArray = Split(fileItem.FileName, ".")
请注意,您应该传递FileName
对象的fileItem
属性的值。 fileItem
似乎没有指定默认属性。