Array
(
)

Salvar PDF em um campo MediumBLOB do MySQL

Wualace Silva
   - 01 fev 2012

Tenho uma rotina que salva arquivos PDFs num campo MediumBLOB do MYSQL, o problema é que só consigo gravar se o arquivo tiver até 470kb, mais do que isso, dá o seguinte erro:
Tentativa de leitura ultrapassou o fim do fluxo.
Descrição: Ocorreu uma exceção não tratada durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.
Detalhes da Exceção: System.IO.EndOfStreamException: Tentativa de leitura ultrapassou o fim do fluxo.
[EndOfStreamException: Tentativa de leitura ultrapassou o fim do fluxo.]
MySql.Data.MySqlClient.MySqlStream.ReadFully(Stream stream, Byte[] buffer, Int32 offset, Int32 count) +88
MySql.Data.MySqlClient.MySqlStream.LoadPacket() +70
[MySqlException (0x80004005): Reading from the stream has failed.]
MySql.Data.MySqlClient.MySqlStream.LoadPacket() +265
MySql.Data.MySqlClient.MySqlStream.ReadPacket() +16
MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int32& insertedId) +73
MySql.Data.MySqlClient.Driver.GetResult(Int32& affectedRows, Int32& insertedId) +17
MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId) +85
MySql.Data.MySqlClient.MySqlDataReader.NextResult() +108
[MySqlException (0x80004005): Fatal error encountered attempting to read the resultset.]
MySql.Data.MySqlClient.MySqlDataReader.NextResult() +352
MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) +750
[MySqlException (0x80004005): Fatal error encountered during command execution.]
MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) +1071
MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() +36
trabalhos_novo.cmdEnviar_Click(Object sender, EventArgs e) in D:\Projetos Net 2.0\cbac2012\trabalhos_novo.aspx.vb:244
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

Abaixo o código que estou executando:

EFETUA UPLOAD DO ARQUIVO
Dim strTipo As String = fileUpload1.PostedFile.ContentType
Dim intTamanho As Integer = System.Convert.ToInt32(fileUpload1.PostedFile.InputStream.Length)
Dim imageBytes(fileUpload1.PostedFile.InputStream.Length) As Byte
fileUpload1.PostedFile.InputStream.Read(imageBytes, 0, imageBytes.Length)
dim isql as string = insert into trabalhos_anexos(id_trabalho, arquivo, tamanho, tipo)
isql += values (@id_trabalho, @arquivo, @tamanho, @tipo)
Dim BasedeDados As New MySqlConnection(ConfigurationManager.ConnectionStrings(LocalMySqlServer).ToString())
Dim Comando As New MySqlCommand(isql, BasedeDados)
Comando.Parameters.Add(@id_trabalho, MySql.Data.MySqlClient.MySqlDbType.Int32).Value = Id
Comando.Parameters.Add(@arquivo, MySql.Data.MySqlClient.MySqlDbType.MediumBlob).Value = imageBytes
Comando.Parameters.Add(@tamanho, MySql.Data.MySqlClient.MySqlDbType.Int32).Value = intTamanho
Comando.Parameters.Add(@tipo, MySql.Data.MySqlClient.MySqlDbType.VarChar, 200).Value = strTipo
BasedeDados.Open()
Comando.ExecuteNonQuery() O Erro ocorre aqui!
Comando.Dispose()
Comando = Nothing
BasedeDados.close
BasedeDados = Nothing

Desde já agradeço a quem puder me dar uma luz!