0
ユーザーが選択したファイルに対してフィルタリングを行っています。私が現在ボタンアップロードのクリックイベントに使用しているコードです。ファイルフィルタリング(ASP.Net、VB.Net)
Dim validFileTypes As String() = {"jpg", "JPG", "jpeg", "JPEG", "png", "PNG"}
Dim ext As String = Path.GetExtension(fileUpload.PostedFile.FileName)
Dim isValidFile As Boolean = False
If fileUpload.HasFile Then
For i As Integer = 0 To validFileTypes.Length - 1
If ext = "." & validFileTypes(i) Then 'if selected url got extension like listed above
isValidFile = True 'file is valid
Dim hfc As HttpFileCollection = Request.Files
For j As Integer = 0 To hfc.Count - 1
Dim hpf As HttpPostedFile = hfc(j)
If hpf.ContentLength > 0 Then
hpf.SaveAs(Server.MapPath("source") & "\" & Path.GetFileName(hpf.FileName))
End If
Next
Else
Alert("Failed to upload! Please select file with valid extension.")
End If
Next
Else
Alert("Please select image!")
End If
したがって、誤った拡張子のファイルを選択した場合、ファイルは一時ファイルにアップロードされません。 validFileTypes
は6種類で構成されているため、Alert("Failed to upload! Please select file with valid extension.")
は選択したファイルが1であっても6回表示されます。私は修正しようとしましたが、あなたからのガイダンスが必要です。ありがとうございました。
ご回答いただきありがとうございます。私はそれを感謝します。私はあなたのコーディングを試みたが、私はこのエラーが発生しました**タイプ 'System.String'のオブジェクトを 'System.Web.HttpPostedFile'にタイプできません。** 'For EachファイルFor HttpPostedFile In files'ファイル – Emerald
あなたのコーディングは素晴らしいですが、複数の画像を選択すると、1つの画像しかチェックして保存しません。 2つの画像を選択すると2回ループしますが、ループ全体で1つの画像と同じ画像しかチェックしません。 – Emerald
実際には、無効なファイルが見つかるまですべての有効なファイルを保存します。次に、有効な拡張子を持つ残りのファイルを選択し、フォームを再度送信する必要があります。あなたのコーディングの欠点は、最初に投稿されたファイルだけを検証することによるもので、実際には無効な拡張子を持つファイルを保存する可能性があります。 –