2009-04-06 8 views

Répondre

7

Voir le chapitre sur le téléchargement de fichiers dans Grails User Guide. Il est également possible d'utiliser un fichier java.sql.Blob comme type pour le contenu binaire (ce qui serait préférable pour les fichiers volumineux).

+2

c'est maintenant un lien mort – Randyaa

5

ou de stocker le fichier sur le disque et de le stocker dans la base de données. il est généralement plus rapide d'accéder à ce fichier sur disque que dans un db. mais bien sûr, cela dépend vraiment de vos besoins dans l'application. Mais soyez conscient de cette alternative.

+1

Je suis conscient de cette alternative puisque j'ai utilisé les deux en PHP. Je pense que je vais utiliser l'option de système de fichiers, car il est facile de déplacer l'ensemble du référentiel de fichiers afin de mettre à l'échelle l'application et/ou le stockage. Merci les gars. – rtacconi

0

J'ai récemment utilisé byte [] dans une classe de domaine pour stocker un fichier, cela fonctionnait bien jusqu'à ce que je déplace mon application de "HSQLDB" à "Oracle express". Sur Oracle, octet [] a été mappé à un objet brut au lieu de blob ... (pas sûr de ce qui était exactement faux) et je résous enfin le problème en utilisant un java.sql.blob

2

J'ai eu le même problème. Tout ce que je devais faire était d'aller à la base de données (Oracle) et de changer le type de colonne de RAW à Blob. (En fait j'ai dû enlever la colonne et ensuite en créer une nouvelle). Je n'ai jamais été capable de trouver comment utiliser un "java.sql.Blob" comme suggéré ci-dessus. J'ai trouvé ceci this (converting from bytes to Blob), mais cela m'a paru un peu compliqué.

3

Vous pouvez forcer l'objet de domaine à utiliser un type spécifique lors de la mise à jour ou la génération de la base de données avec des mappings de colonne:

byte[] orgFile 

static mapping = { 
    columns { 
    orgFile type:'blob' 
    } 
} 

Cela a fonctionné pour moi jusqu'à présent;)