2010-12-05 17 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 

もう1つのわずかな変更は、をハードコードしないことになります拡張機能ですが、アップロードされたファイルの拡張子をそのまま使用してください:

Path.GetExtension(imageUpload.FileName) 
+0

これは素晴らしいです。どうもありがとうございました。 – onfire4JesusCollins

関連する問題