23. februar 2006 - 09:35Der er
11 kommentarer og 1 løsning
Url til billede til blobDomain også ned i ORACLE - databasen
public BlobDomain getPicture(){ byte[] buf = new byte[65536]; try { URL realUrl = new URL(pictureUrl.toString()); URLConnection con = realUrl.openConnection(); InputStream readCon = con.getInputStream(); int i = 0; while((i=readCon.read(buf))!=-1) {
det går fint lige indtil at jeg skal smide blobDomain i DB. Jeg får godt nok NOGET ned i databasen, men det er forkert. Er der nogen der har prøvet at smide et billede i en oracle DB.
Men hvorfor ligger hele dit blobDomain nede i databasen ? Det tager tid at gemmer og fylder meget. Hvorfor ikke bare smide en sti i din tabel i databasen der peger på hvor dit billeder ligger. Nå der så forespørges på et billed får du stien til billedet og kan sende billedet return til forespørgeren.
Hvis jeg skal hente den via en sti kraver det en socket forbindelse, derefter skal billedet laves til en bufferedImage ellers kan jeg ikke sende den over nettet. Alt dette er jeg fri for hvis jeg kan ligge den i databasen. Jeg ved ikke hvor meget tid det tager, eller hvor meget extra det fylder, men jeg TROR det er minimalt
Her opretter jeg jeg et en række i databasen, og får række tilbage (card) CardsViewRow card = getInstance().getCardClient().createCard(getCardName(),characters,cardTypes,getPower(),getToughness(),getRules_text(),getRarity(),getSerieName(),getDeleted(),getCreatedBy());
Her efter finder jeg billedet:
FindCardPictureUtility findCardPictureUtility = new FindCardPictureUtility(getCardName(),getSerieName());
til sidst indsætter jeg billedet i rækken(setPicture(...))
grunden til dette er at jeg bruger viewObjects. ViewObject er oracles måde at til gå data i databasen. Viewobjects klare alt fra insert, update, select og delete for mig.
Jeg er helt enig. Jeg håbede bare på at nogen havde prøvet det. Lige nu prøver jeg at finde selve sql'en til at sætte billedet ind. Er det noget du har prøvet eller har erfaring med?
public BlobDomain getPicture(){ addSerieNameToPictureUrl(); addCardNameToPictureUrl(); BlobDomain blobDomain = new BlobDomain(); byte[] buf = null; int i = 0; try { OutputStream out = blobDomain.getBinaryOutputStream(); URL realUrl = new URL(pictureUrl.toString()); URLConnection con = realUrl.openConnection(); InputStream readCon = con.getInputStream(); buf = new byte[con.getContentLength()]; while((i=readCon.read(buf))!=-1) { out.write(buf, 0, i); } readCon.close(); out.close(); } catch (Exception e) { e.printStackTrace(); } return blobDomain; }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.