2008-10-13 16 views
3

J'essaye de créer et de récupérer un BLOB dans une table MySQL via la bibliothèque ORM de Kohana.Kohana PHP, ORM et MySQL BLOBs

Le code ressemble à:

$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(); 

J'ai vérifié que les données sont OK à ce point en sortie dans un fichier. Cependant, quand je récupère les données, il est corrompu. J'ai réussi à rétrécir un peu plus - j'ai utilisé l'outil de requête MySQL pour extraire les données contenues dans la base de données et je peux vérifier que les données dans la base de données sont corrompues, donc le problème doit être sur l'INSERT . En outre, les fichiers entrés ne sont pas toujours corrompus - les fichiers plus petits (tels que les images) ont tendance à être OK.

Vous avez des idées?

Répondre

3

Il s'avère que, dans ce cas, j'utilisais le type de données BLOB.

Le type de données BLOB tronque données à 65535 caractères (sans bruit, sans jeter une erreur!)

J'ai augmenté à un MEDIUMBLOB (qui a une longueur maximum de 16777215 caractères), et il semble fonctionner D'ACCORD!

0

Wild deviner, mais: probablement parce que la couche de modèle de kohana insère toutes les données en tant que données de caractères au lieu de binaire, ce qui vous causera des problèmes lors de l'enregistrement/récupération des objets BLOB.