开发者

upload jpg/png/ gif photos

开发者 https://www.devze.com 2023-01-20 04:11 出处:网络
I was doing a test to upload pictures and i found out that when i upload pictures more than 2000px the webpage turn to be slow. I want users to upload pics with size not more than 600px and height 700

I was doing a test to upload pictures and i found out that when i upload pictures more than 2000px the webpage turn to be slow. I want users to upload pics with size not more than 600px and height 700px.

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 > 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 & pictureIDJustAdded & ".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!

        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.GridViewDeletedEventA开发者_Go百科rgs) Handles gvPictures.RowDeleted
    Dim baseDirectory As String = Server.MapPath("~/UploadedImages/")
    Dim fileName As String = baseDirectory &
        e.Keys("PictureID") & ".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


Setting a max width and height on an uploaded image isn't necessarily going to fix your problem as you could upload an image with a much higher DPI and it still be a "large" image with small dimensions. Also, you would have to check the image dimensions once the image had been uploaded to your server.

You could set a maxiumum file size in the web.config using the maxRequestLength property which could be used to prevent a large file being uploaded...


Sorry if my vb is wrong as im a c# guy!! but I hope this should give you a guidance. I do something similar in c#. Good luck

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 > 600 Or image.Height > 700 Then
               cancelInsert = True
            End If
        End If
    End If

    //etc
0

精彩评论

暂无评论...
验证码 换一张
取 消