upload images using gif, jpg, png etc
<p>I have an application were users can upload pics. </p>

<p>The code below allow only jpg images but i want to extend it to gif, png.</p>

<p>The code is below:</p>

<pre><code>Imports System.Data
Imports System.IO
Imports System.Data.SqlClient

Partial Class PhotoAdmin_Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        UserIdValue.Text = Membership.GetUser().ProviderUserKey.ToString()
        cannotUploadImageMessage.Visible = False
    End Sub

    Protected Sub dvPictureInsert_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewInsertedEventArgs) Handles dvPictureInsert.ItemInserted
        'If the record was successfully inserted, save the picture
        If e.AffectedRows &gt; 0 Then
            'Determine the maximum pictureID for this user
            Dim results As DataView = CType(maxPictureIDDataSource.Select(DataSourceSelectArguments.Empty), DataView)
            Dim pictureIDJustAdded As Integer = CType(results(0)(0), Integer)
            'Reference the FileUpload control
            Dim imageUpload As FileUpload = CType(dvPictureInsert.FindControl("imageUpload"), FileUpload)
            If imageUpload.HasFile Then
                Dim baseDirectory As String = Server.MapPath("~/UploadedImages/")
                imageUpload.SaveAs(baseDirectory &amp; pictureIDJustAdded &amp; ".jpg")
            End If
        End If
        If e.Exception Is Nothing Then
            ' Use the AffectedRows property to determine whether the
            ' record was inserted. Sometimes an error might occur that 
            ' does not raise an exception, but prevents the insert
            ' operation from completing.
            If e.AffectedRows = 1 Then
                MessageLabel.Text = "Record inserted successfully."
            Else
                MessageLabel.Text = "An error occurred during the insert operation."
                ' Use the KeepInInsertMode property to remain in insert mode
                ' when an error occurs during the insert operation.
                e.KeepInInsertMode = True
            End If
        Else
            ' Insert the code to handle the exception.
            MessageLabel.Text = e.Exception.Message
            ' Use the ExceptionHandled property to indicate that the 
            ' exception has already been handled.
            e.ExceptionHandled = True
            e.KeepInInsertMode = True
        End If
    End Sub


    Protected Sub dvPictureInsert_ItemInserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewInsertEventArgs) Handles dvPictureInsert.ItemInserting
        Dim cancelInsert As Boolean = False

        Dim imageUpload As FileUpload =CType(dvPictureInsert.FindControl("imageUpload"), FileUpload)
        If Not imageUpload.HasFile Then
            cancelInsert = True
        Else
            If Not imageUpload.FileName.ToUpper().EndsWith(".JPG") Then
                cancelInsert = True 'Invalid image file!

            Else
                Dim image As System.Drawing.Image = System.Drawing.Image.FromStream(imageUpload.PostedFile.InputStream)
                If image.Width &gt; 950 Or image.Height &gt; 950 Then
                    cancelInsert = True
                End If
            End If
        End If
        If cancelInsert Then
            e.Cancel = True
            cannotUploadImageMessage.Visible = True
        End If
        'Set the UserId value to the currently logged on user's ID
        e.Values("UserId") = Membership.GetUser().ProviderUserKey
        'Set the UploadedOn value to the current date/time
        e.Values("UploadedOn") = DateTime.Now
    End Sub
    Protected Sub gvPictures_RowDeleted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeletedEventArgs) Handles gvPictures.RowDeleted
        Dim baseDirectory As String = Server.MapPath("~/UploadedImages/")
        Dim fileName As String = baseDirectory &amp; e.Keys("PictureID") &amp; ".jpg"
        File.Delete(fileName)
    End Sub
    Protected Sub gvPictures_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles gvPictures.RowUpdating
        e.NewValues("UserId") = Membership.GetUser().ProviderUserKey
    End Sub


End Class
</code></pre>
