Unable to upload images larger than 131 071 bytes

  • Thread starter Thread starter Shawn
  • Start date Start date
S

Shawn

Hi. I'm letting the users upload images into a sybase 12.5 database. The
problem is that when ContentLength exceeds 131 071 an exception occur. The
e.Message property is empty so it doesn't tell me much. I know that images
much larger than this exist in the database. Any help is appreciated! Here
is my code:

Dim cn As New Connection
Dim oleDbCommand As OleDbCommand
Dim strSqlImage As String
Dim stream As System.IO.Stream = textBoxImage.PostedFile.InputStream
Dim intFileLength As Integer = textBoxImage.PostedFile.ContentLength
Dim byteArray(intFileLength) As Byte

cn.Open()

stream.Read(byteArray, 0, intFileLength)

strSqlImage = "UPDATE TABLE1 SET image = ? WHERE id = " & intID

oleDbCommand = New OleDbCommand(strSqlImage, cn.oleDbConnection)
oleDbCommand.Parameters.Add(New OleDbParameter("@image",
OleDbType.LongVarBinary)).Value = byteArray

oleDbCommand.ExecuteNonQuery()
 
The problem isn't uploading bigger files to the server, it's inserting them
into the DB.

Shawn
 
haven't used sybase in awhile, but you used to have "set textsize" for arge
text or images, as it defautled to 32k.

-- bruce (sqlwork.com)



| The problem isn't uploading bigger files to the server, it's inserting
them
| into the DB.
|
| Shawn
|
|
| | > Shawn:
| >
| > You'll want to check the value of maxRequestLength in web.config or
| machine.config.
| > It sounds as if the default value has been overridden but perhaps you'll
| > need to bump it up higher.
| >
| > See:
| > PRB: Cannot Upload Large Files When You Use the HtmlInputFile Server
| Control
| > http://support.microsoft.com/default.aspx?scid=kb;en-us;295626
| >
| > --
| > Scott
| > http://www.OdeToCode.com/blogs/scott/
| >
| > > Hi. I'm letting the users upload images into a sybase 12.5 database.
| > > The problem is that when ContentLength exceeds 131 071 an exception
| > > occur. The e.Message property is empty so it doesn't tell me much. I
| > > know that images much larger than this exist in the database. Any help
| > > is appreciated! Here is my code:
| > >
| > > Dim cn As New Connection
| > > Dim oleDbCommand As OleDbCommand
| > > Dim strSqlImage As String
| > > Dim stream As System.IO.Stream = textBoxImage.PostedFile.InputStream
| > > Dim intFileLength As Integer = textBoxImage.PostedFile.ContentLength
| > > Dim byteArray(intFileLength) As Byte
| > > cn.Open()
| > >
| > > stream.Read(byteArray, 0, intFileLength)
| > >
| > > strSqlImage = "UPDATE TABLE1 SET image = ? WHERE id = " & intID
| > >
| > > oleDbCommand = New OleDbCommand(strSqlImage, cn.oleDbConnection)
| > > oleDbCommand.Parameters.Add(New OleDbParameter("@image",
| > > OleDbType.LongVarBinary)).Value = byteArray
| > >
| > > oleDbCommand.ExecuteNonQuery()
| > >
| >
| >
|
|
 
Scott, I stumbled onto this post and think I'm missing something here. I
reviewed the article you list but am expericing an error when I go over
4KB??? I'm saving to SQl Server 2K, field is image. Nothing set in webconfig,
etc.
Any ideas?

Code:
Dim iLength As Integer = CType(inpFileUp.PostedFile.InputStream.Length,
Integer)
If iLength = 0 Then Exit Sub 'not a valid file
Dim sContentType As String = inpFileUp.PostedFile.ContentType
Dim sFileName As String, i As Integer
Dim bytContent As Byte()
ReDim bytContent(iLength) 'byte array, set to file size


'strip the path off the filename
i = InStrRev(inpFileUp.PostedFile.FileName.Trim, "\")
If i = 0 Then
sFileName = inpFileUp.PostedFile.FileName.Trim
Else
sFileName = Right(inpFileUp.PostedFile.FileName.Trim,
Len(inpFileUp.PostedFile.FileName.Trim) - i)
End If

Try
inpFileUp.PostedFile.InputStream.Read(bytContent, 0, iLength)

Response.Write("filesize = " & iLength & "<br>")

'save new image record
Dim cmdInsert As New SqlCommand
Dim insertstring As String
Dim imageid As String

SqlConnect = New SqlConnection(ConnectString)
SqlConnect.Open()

'add company info
insertstring = "INSERT tblImages ( Image_Name, Image_Filename,
Image_Type, Image_FileSize, Image, DateAdded, AddedBy ) VALUES ( @imagename,
@filename, @contenttype, @filesize, @image, @dateadded, @addedby );SELECT
@@Identity" 'using parameters

cmdInsert = New SqlCommand(insertstring, SqlConnect)

With cmdInsert

.Parameters.Add("@imagename", "" & txtimagetitle.Text)
.Parameters.Add("@filename", "" & sFileName)
.Parameters.Add("@contenttype", "" & sContentType)
.Parameters.Add("@filesize", iLength)
.Parameters.Add("@image", bytContent)
.Parameters.Add("@dateadded", Date.Now())
.Parameters.Add("@addedby", Session("contactid"))

End With

imageid = cmdInsert.ExecuteScalar

'close object and connection
SqlConnect.Close()

'add new item to list
ddexistingimages.Items.Add(New ListItem(txtimagetitle.Text,
imageid))

'set label for status
lblstatus.Text = "Image Saved"

Catch ex As Exception
'Handle your database error here

'set label for status
lblstatus.Text = "Error - Please Contact System Administrator."
'close object and connection
SqlConnect.Close()
End Try
 
Back
Top