Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Por que recebo o erro JPEG 42 quando ele está armazenado em um banco de dados?


O erro JPEG 42 é relatado quando o fluxo é truncado. Por exemplo, se você tentar carregar um arquivo de comprimento zero em um TJPEGImage então o erro 42 é o resultado final.

Se algumas imagens forem exibidas, mas não todas, a explicação mais provável é que os dados de alguma forma não estão fazendo a viagem de ida e volta para o banco de dados.

Verifique o tamanho do campo BLOB ao escrevê-lo. Verifique se ele corresponde ao tamanho do arquivo ao gravá-lo em um arquivo de disco. Verifique se o arquivo do disco é um JPEG válido. Em seguida, confirme se o campo BLOB tem exatamente o mesmo comprimento quando você o lê novamente. Talvez haja algo errado com seu código de banco de dados e o fluxo esteja sendo truncado.

Portanto, o primeiro passo aqui é confirmar que você pode recuperar exatamente os mesmos dados que colocou originalmente no banco de dados.

O único outro pensamento que tenho é que o gráfico no controle de imagem nem sempre é um JPEG. O código que você usa para carregar a imagem, Image1.Picture.Graphic.LoadFromStream() assume que os dados são um JPEG. Se você salvou algo diferente de um JPEG, então LoadFromStream() falharia.