Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pourquoi est-ce que j'obtiens l'erreur JPEG 42 lorsqu'elle est stockée dans une base de données ?

L'erreur JPEG 42 est signalée lorsque le flux est tronqué. Par exemple, si vous essayez de charger un fichier de longueur nulle dans un TJPEGImage alors l'erreur 42 est le résultat final.

Si certaines images s'affichent, mais pas toutes, l'explication la plus probable est que les données ne font pas l'aller-retour vers la base de données et inversement.

Vérifiez la taille du champ BLOB lorsque vous l'écrivez. Vérifiez qu'elle correspond à la taille du fichier lorsque vous l'écrivez sur un fichier disque. Vérifiez que le fichier disque est un fichier JPEG valide. Confirmez ensuite que le champ BLOB a exactement la même longueur lorsque vous le relisez. Il y a peut-être quelque chose qui ne va pas avec votre code DB et le flux est tronqué.

Ainsi, la toute première étape ici consiste à confirmer que vous pouvez récupérer exactement les mêmes données que celles que vous avez mises à l'origine dans la base de données.

La seule autre pensée que j'ai est que le graphique dans le contrôle de l'image n'est pas toujours un JPEG. Le code que vous utilisez pour charger l'image, Image1.Picture.Graphic.LoadFromStream() suppose que les données sont au format JPEG. Si vous aviez enregistré autre chose qu'un JPEG, alors LoadFromStream() échouerait.