Pregunta

Estoy tratando de crear y recuperar un BLOB en una tabla MySQL a través de la biblioteca ORM de Kohana.

El código se parece a:

$attachment = new Attachment_Model();
$attachment->name = $info['FileName'];
$attachment->size = strlen($info['Data']);
$attachment->data = $info['Data'];
$attachment->mime_type = $info['content-type'];
$attachment->save();

Verifiqué que los datos están bien en este momento al enviarlos a un archivo. Sin embargo, cuando recupero los datos salen corruptos. Logré reducir esto un poco más: utilicé la herramienta de consulta MySQL para extraer los datos almacenados en la base de datos y puedo verificar que los datos en la base de datos estén dañados, por lo que el problema debe estar en el INSERTAR .

Además, los archivos ingresados ??no siempre están dañados: los archivos más pequeños (como las imágenes) tienden a estar bien.

¿Alguien tiene alguna idea?

¿Fue útil?

Solución

Resulta que, en este caso, estaba usando el tipo de datos BLOB.

El tipo de datos BLOB trunca los datos a 65535 caracteres (¡en silencio, sin arrojar un error!)

Lo he subido a un MEDIUMBLOB (que tiene una longitud máxima de 16777215 caracteres), ¡y parece que funciona bien!

Otros consejos

Suposición salvaje, pero: probablemente porque la capa del modelo kohana inserta todos los datos como datos de caracteres en lugar de binarios, lo que le causará problemas al guardar / recuperar objetos BLOB.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top