Quisiera saber como puedo insertar una imagen "bytea" en una tabla de mi base de datos postgresql, con la condición de que la imagen sea un archivo png.
Aquí está la tabla:
"id_category" SERIAL, "category_name" TEXT, "category_image" bytea, constraint id_cat_pkey primary key ("id_category"))without oids;¿Cómo puedo asegurarme de que los archivos insertados en la tabla solo sean archivos PNG?
Lo mejor que puede hacer es escribir una restricción de verificación que extraiga los primeros bytes del bytea y verifique el número mágico apropiado:
CHECK (substr(image, 1, 8) = BYTEA '\x89504E470D0A1A0A')Por supuesto, no hay garantía de que ningún otro archivo comience con estos bytes, pero eso es lo mejor que puede hacer antes de verificar la coherencia de todo el archivo.