- PR -

ValidationControlでファイル拡張子

1
投稿者投稿内容
範子
常連さん
会議室デビュー日: 2005/01/15
投稿数: 46
投稿日時: 2005-03-09 17:29
いつもお世話になっております。

FileUploadで画像ファイル(jpeg、gif、bmp)のみ選択するようにしたいのですが、FileControlだけではファイル形式を規制できないようなので、ValidationControlを使ったほうがよいと思っております。
この場合ValidationControlでファイル拡張子を判断させるにはどのようにしたらよいのでしょうか。(asp.net(VB))
よろしくお願いします。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-03-09 18:32
引用:

範子さんの書き込み (2005-03-09 17:29) より:

FileControlだけではファイル形式を規制できないようなので、ValidationControlを使ったほうがよいと思っております。
この場合ValidationControlでファイル拡張子を判断させるにはどのようにしたらよいのでしょうか。(asp.net(VB))


えーと、FileControlってなんのことでしょう?
MSDNを検索しても見つからなかったもんで(^^;

ValidationControlの使い方もちょっとわからないんですが、とりあえず、拡張子だけでファイル種別を判断するのは危険ですよ。TIPSに画像ファイルのフォーマットを取得する方法がのってます。

http://www.atmarkit.co.jp/fdotnet/dotnettips/022getformat/getformat.html

個人的に興味があったので、簡単なサンプルを作ってみました。せっかくなので貼っときますね。

コード:


Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Me.TextBox1.Text = "???"
Me.TextBox2.Text = "???"
Try
'拡張子の取得
Dim filePath As String = Me.File1.PostedFile.FileName
Me.TextBox1.Text = System.IO.Path.GetExtension(filePath)

'画像フォーマットの取得
Dim img As Bitmap
Dim decoders As System.Drawing.Imaging.ImageCodecInfo()
Dim ici As System.Drawing.Imaging.ImageCodecInfo
If Me.File1.PostedFile.ContentLength > 0 Then
img = New Bitmap(Me.File1.PostedFile.InputStream)
decoders = System.Drawing.Imaging.ImageCodecInfo.GetImageDecoders()
For Each ici In decoders
If ici.FormatID.Equals(img.RawFormat.Guid) Then
Me.TextBox2.Text = ici.FormatDescription
Exit For
End If
Next
Else
Me.TextBox2.Text = "Empty File"
End If
Catch ex As Exception

End Try
End Sub



--<編集>--
ForループにExit書くの忘れてた…

[ メッセージ編集済み 編集者: ぼのぼの 編集日時 2005-03-09 19:11 ]
範子
常連さん
会議室デビュー日: 2005/01/15
投稿数: 46
投稿日時: 2005-03-09 23:06
ほのぼの様
サンプルまで作っていただき、ありがとうございました。

私の説明不足、すみませんでした。
FileControlとはFileUpload(参照ボタンのついた)のことです。
ご指摘のとおり拡張子だけで画像ファイルと判断するのは危険ですね。

ほのぼの様のサンプルで実装してみて「本当の拡張子」を知ることができました。

さて最終目的である、画像以外のファイルをアップロードしようとしたときの、
規制をどのようにしたらよいのでしょうか?
ValidationControlが確実かと思いますが、ValidationControlを使ってできないものでしょうか。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-03-10 01:16
ぼのぼのです。

引用:

範子さんの書き込み (2005-03-09 23:06) より:
さて最終目的である、画像以外のファイルをアップロードしようとしたときの、
規制をどのようにしたらよいのでしょうか?
ValidationControlが確実かと思いますが、ValidationControlを使ってできないものでしょうか。


実はValidationControlって使ったことないんですが、自分でここまでしっかりチェックロジックを書くのなら、こだわる必要ないと思いますが…普通のラベルでエラーメッセージを表示してやれば十分では?
1

スキルアップ/キャリアアップ(JOB@IT)