2010-12-05 115 views
0

我有一個應用程序,用戶可以上傳圖片。使用gif,jpg,png等上傳圖片

以下代碼僅允許使用jpg圖像,但我想將其擴展爲gif,png。

的代碼如下:

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! 

      Else 
       Dim image As System.Drawing.Image = System.Drawing.Image.FromStream(imageUpload.PostedFile.InputStream) 
       If image.Width > 950 Or image.Height > 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 & 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 

回答

1

下面一行似乎是檢查的文件擴展名:

If Not imageUpload.FileName.ToUpper().EndsWith(".JPG") Then 
    cancelInsert = True 'Invalid image file! 

,使其接受其它文件類型以及你可以修改它:

Dim acceptedExtensions = New String() { ".jpg", ".png", ".gif" } 
If Not acceptedExtensions.Contains(imageUpload.FileName, StringComparer.OrdinalIgnoreCase) Then 
    cancelInsert = True 'Invalid image file! 
End If 

另一個細微的修改將包括不硬編碼.jpg擴展名,但僅使用上傳文件的擴展名:

Path.GetExtension(imageUpload.FileName) 
+0

這太棒了。非常感謝你。 – onfire4JesusCollins 2010-12-05 15:57:30

相關問題