Mysql
 sql >> Database >  >> RDS >> Mysql

Perché viene visualizzato l'errore JPEG 42 quando è archiviato in un database?

L'errore JPEG 42 viene segnalato quando il flusso viene troncato. Ad esempio, se tenti di caricare un file di lunghezza zero in un TJPEGImage quindi l'errore 42 è il risultato finale.

Se vengono visualizzate alcune immagini, ma non tutte, la spiegazione più probabile è che i dati in qualche modo non stanno effettuando il viaggio di andata e ritorno al DB e ritorno.

Controlla la dimensione del campo BLOB quando lo scrivi. Verifica che corrisponda alla dimensione del file quando lo scrivi su un file su disco. Verifica che il file del disco sia un JPEG valido. Quindi conferma che il campo BLOB ha esattamente la stessa lunghezza quando lo rileggi. Forse c'è qualcosa che non va nel tuo codice DB e lo stream viene troncato.

Quindi, il primo passo in assoluto qui è confermare che puoi recuperare esattamente gli stessi dati che hai originariamente inserito nel DB.

L'unico altro pensiero che ho è che la grafica nel controllo dell'immagine non è sempre un JPEG. Il codice che usi per caricare l'immagine, Image1.Picture.Graphic.LoadFromStream() presuppone che i dati siano un JPEG. Se hai salvato qualcosa di diverso da un JPEG, allora LoadFromStream() fallirebbe.