1

私は次のコードを持っています:

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, ".")

ブラウザは私に言っています:

MicrosoftVBScriptランタイムエラー「800a01b6」

オブジェクトはこのプロパティまたはメソッドをサポートしていません

/up/freeaspupload.asp、90行目

私が見上げるところはどこでも、これがあなたのやり方であることを示しています。

誰かが私が間違っていることやこれを回避する方法について何か考えがありますか?

特定の拡張機能のみをアップロードできるようにしたいだけです。

4

2 に答える 2

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
于 2012-05-19T01:47:39.467 に答える
2

さて、Kul-Tiginは、この質問が実際に関係している分割問題を乗り越えたときにクラッシュするコードの別の問題を発見しました。Split関数が失敗する理由は、次のようになっていると思われます。

 MyArray = Split(fileItem.FileName, ".")

おそらくオブジェクトのFileNameプロパティの値を渡す必要があることに注意してください。デフォルトのプロパティが指定されていないfileItemようです。fileItem

于 2012-05-21T12:18:26.053 に答える