【问题标题】:Triggering a SUBMIT in an asp.net application在 asp.net 应用程序中触发 SUBMIT
【发布时间】:2011-09-28 14:07:34
【问题描述】:

在 SQL 2005 数据库中保存图像文件时,我需要触发提交。

用户将上传他们的图片文件。
然后,我的应用程序将检查图像文件大小是否符合特定要求。
如果是这样,则将图像保存到字段为图像数据类型的表中。 (如果尺寸不符合要求,显示错误信息并退出子)。

问题是如果我将图像文件保存到数据库中,则值会正确保存(但是,我没有检查图像大小)。

如果我先检查图像文件大小,然后保存,保存的值已损坏(不正确)。

有没有一种方法可以检查文件大小,然后在代码隐藏中提交时保存文件?

我的代码如下:

            Dim iRequiredImageHeight As Integer = 80
            Dim iRequiredImageWidth As Integer = 280

            Dim imgBytes(FileUpload1.PostedFile.InputStream.Length) As Byte
            Dim stream As System.IO.Stream = FileUpload1.PostedFile.InputStream
            stream.InitializeLifetimeService()
            stream.Read(imgBytes, 0, imgBytes.Length)

            Dim imgData As System.Drawing.Image = System.Drawing.Image.FromStream(stream)
            Dim imgWidth As Integer = imgData.PhysicalDimension.Width
            Dim imgHeight As Integer = imgData.PhysicalDimension.Height

            If imgHeight > iRequiredImageHeight Or imgHeight > iRequiredImageWidth Then
                lblLogoMessage.Text = "The image you have uploaded is " & imgHeight & "px height by " & imgWidth & "px width. <br/> Required image size is " & iRequiredImageHeight & "px height by " & iRequiredImageWidth & "px width. <br/> Please resize the image and try again."
                lblLogoMessage.ForeColor = Drawing.Color.Red
                lblLogoMessage.Visible = True
                bLogoFit = False
            Else

                Dim LogoFile As String = FileUpload1.FileName.ToString.Trim
                Dim FileBytes(FileUpload1.PostedFile.InputStream.Length) As Byte

                FileUpload1.PostedFile.InputStream.Read(FileBytes, 0, FileBytes.Length)

                Dim SQL As String = "update CorpLogo "
                SQL += "set HeaderLogoName = @LogoFile, LogoImage = @LogoBytes "
                SQL += " where isonum='100'"

                Dim myConn As New SqlConnection(connString)
                Dim SQLcmd As New SqlCommand(SQL, myConn)
                SQLcmd.Parameters.AddWithValue("@LogoFile", LogoFile)
                SQLcmd.Parameters.AddWithValue("@LogoBytes", FileBytes)

                myConn.Open()
                SQLcmd.ExecuteNonQuery()
                myConn.Close()
            End If

【问题讨论】:

  • 为什么你的价值会被破坏?您是否以任何方式更改图像?
  • 不,不以任何方式更改图像。
  • 啊..你读了两次流..也许这就是问题???从来没有那样工作过……
  • 是的,我正在阅读两次流。
  • 好吧,就读一遍吧!!读两遍有什么意义?

标签: asp.net sql-server vb.net image


【解决方案1】:

只是一个简短的说明,因为您已经解决了问题。流就像一根消防水带。它将“水”从一个位置移动到另一个位置。从流中提取后,您要查找的位不再存在,因为它们已经被拉到某个位置,而不是“保留在流中”。简而言之,流是从一个持久位置到另一个位置的桥梁。一旦项目清除了流,它们就不再存在了。

这就是为什么在获得位后无法获得位(损坏)的原因。

【讨论】:

    猜你喜欢
    • 2015-07-09
    • 1970-01-01
    • 2013-04-18
    • 2018-04-13
    • 1970-01-01
    • 2013-10-08
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多