Mysql
 sql >> Base de données >  >> RDS >> Mysql

Lire le fichier BLOB d'image de cadre pour l'objet de test Yaml

J'ai rencontré le même genre de problème il y a quelques temps sur un projet. Cependant, comme je ne pouvais pas trouver un moyen de résoudre ce problème avec les appareils (car la base de données stocke l'objet blob sous forme de chaîne, comme Pere l'a expliqué ci-dessus), j'ai créé une solution de contournement pour au moins résoudre ce problème dans un scénario de test. J'ai créé le fichier suivant /app/job/Bootstrap.java :

import play.test.*;
import play.jobs.*;
import play.db.DB;
import models.*;

import java.util.List;

@OnApplicationStart
public class Bootstrap extends Job {
     public void doJob() {
        // Load default data if the database is empty
        if(Item.count() == 0) {
            Fixtures.loadModels("my_fixtures.yml");
            List<Item> allItems = Item.findAll();
            for (Item a: allItems){
                DB.execute("UPDATE `Item` SET image='item_" + a.name.toLowerCase() + ".png|image/png' WHERE id=" + a.getId());
            }
        }
    }
}

La première chose que je fais est de remplir la base de données avec les données initiales s'il n'y a pas d''Item' déjà stocké dans la base de données.
La deuxième chose est d'itérer sur tous les 'Item' qui jouent ! juste stockés dans la base de données, qui sont lus à partir du fichier "my_fixtures.yml". Ici, pour chaque élément, le champ de chaîne sera mis à jour comme indiqué dans l'exemple ci-dessus.

Je sais que ce n'est pas exactement la réponse à la question dans le PO, mais cela donne une bonne idée pour contourner ce problème..

EDIT :Dans l'exemple donné ci-dessus, je suppose que les images sont téléchargées manuellement dans votre dossier de pièces jointes, comme indiqué dans votre application.conf , et que chaque nom d'image ressemble à :"item_" avec une extension ".png"