Запуск SUBMIT в приложении asp.net - PullRequest
       3

Запуск SUBMIT в приложении asp.net

0 голосов
/ 28 сентября 2011

Мне нужно активировать отправку при сохранении файла изображения в базе данных 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

1 Ответ

3 голосов
/ 28 сентября 2011

Просто краткое замечание, поскольку вы решили проблему.Поток похож на пожарный шланг.Он перемещает «воду» из одного места в другое.После того, как вы извлекли из потока, искомые биты больше не существуют, так как они уже вытянуты в какое-то место, а не «удерживаются в потоке».Короче говоря, поток - это мост из одного постоянного места в другое.Как только элементы очистили поток, их больше нет.

Вот почему вы не можете получить биты (повреждение) после того, как вы получили биты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...