Jakiś czas temu doświadczyłem tego samego problemu przy projekcie. Ponieważ jednak nie mogłem znaleźć sposobu, aby rozwiązać ten problem za pomocą urządzeń (ponieważ baza danych przechowuje obiekt blob jako ciąg znaków, jak wyjaśnił powyżej Pere), stworzyłem obejście, aby przynajmniej rozwiązać ten problem w scenariuszu przypadku testowego. Utworzyłem następujący plik /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());
}
}
}
}
Pierwszą rzeczą, którą robię, jest wypełnienie bazy danych danymi początkowymi, jeśli w bazie danych nie ma już żadnego „Przedmiotu”.
Drugą rzeczą jest iteracja po wszystkich „Przedmiotach”, które są odtwarzane! po prostu przechowywane w bazie danych, które są odczytywane z pliku "my_fixtures.yml". Tutaj dla każdego elementu pole tekstowe zostanie zaktualizowane, jak pokazano w powyższym przykładzie.
Wiem, że nie jest to do końca odpowiedź na pytanie w PO, ale daje to pewien pomysł na obejście tego problemu.
EDYTUJ:W powyższym przykładzie zakładam, że zdjęcia są przesyłane ręcznie do folderu załączników, jak podano w pliku application.conf , a nazwa każdego obrazu to:„item_