Avatar billede baitianlong Nybegynder
07. juli 2006 - 17:32 Der er 10 kommentarer og
1 løsning

Vis et billede fra binaer data

Jeg har nogle billeder i mit system, som er repraesenteret ved en BLOB. Jeg har gjort det foer i php med at saette content type til image/jpeg og derefter blot print... Man maa kunne noget lign. i jsp/java.

Er der een, der lge kan skrive hvordan?
Avatar billede arne_v Ekspert
07. juli 2006 - 21:25 #1
JSP er ikke godt til det.

Servlet kan bruges.
Avatar billede arne_v Ekspert
07. juli 2006 - 21:28 #2
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("image/jpeg");
        // skriv bytes til response.getOutputStream()
    }
Avatar billede baitianlong Nybegynder
08. juli 2006 - 08:10 #3
Jeg bliver noedt til at have mere hjaelp med det, Arne (eller andre)...

Jeg har en BookResult klasse...

public class BookResult {
    private String source;
    private String title;
    private Blob image;
    private int year;

Og en tilsvarende tabel i DB. Saa har jeg min 'hente' metode her:

public static List getBooksFromDb() throws SQLException {
        List books = new ArrayList();
        Connection c = DatabaseContact.openDatabase();
        ResultSet rs = null;
        Statement stmt = c.createStatement();
        rs = stmt.executeQuery("SELECT * FROM dblibraryresults");
        while(rs.next()) {
            BookResult br = new BookResult();
            br.setSource(rs.getString("source"));
            br.setImage(rs.getBlob("image"));
            br.setTitle(rs.getString("title"));
            br.setYear(rs.getInt("year"));
            books.add(br);
        }
        return books;
    }

...og saa i jsp'en hvor jeg har hentet dem ind i en List, der hedder books:

            <%
                for (Object book : books) {
            %>
            <tr>
                <td class="italics"><%= ((BookResult) book).getSource() %></td>
                <td class="halfbold"><%= ((BookResult) book).getTitle() %></td>
                <td>
                    <img src="HJAAAAELP" alt=""??????

                </td>
                <td class="small"><%= ((BookResult) book).getYear() %></td>
            </tr>
            <%
                }
            %>

Og herefter er jeg lost :)
Avatar billede baitianlong Nybegynder
08. juli 2006 - 10:51 #4
Naa, jeg fandt een paa nettet http://forum.java.sun.com/thread.jspa?threadID=504289&messageID=2389208 men desvaerre virker det ikke for mig

Den skriver bare f.eks : Binary(bytes.length=2767, bytes.hashCode=97335137) i stedet for at vise billedet :(
Avatar billede arne_v Ekspert
08. juli 2006 - 15:32 #5
som jeg sagde - JSP not good servlet good
Avatar billede arne_v Ekspert
08. juli 2006 - 15:34 #6
<img src="ShowPicture?source=<%=((BookResult)book).getSource()%>" alt="">
Avatar billede arne_v Ekspert
08. juli 2006 - 15:35 #7
ShowPicture er så en servlet som

sætter content type

henter BLOB fra database (byte[] b = rs.getBytes()]

skriver data til response [response.getOutputStream().write(b)]
Avatar billede arne_v Ekspert
08. juli 2006 - 15:38 #8
linket er OK

prøv om ikke getBytes virker så du undgår getBlob

koden er ikke thread safe (som en også noterer) !!!!
Avatar billede arne_v Ekspert
13. august 2006 - 22:54 #9
kommet videre ?
Avatar billede baitianlong Nybegynder
12. oktober 2007 - 18:33 #10
Hej Arne, beklager dette gamle spoergsmaal aldrig er lukket, hvis du smider et svar kan jeg lukke her...
Avatar billede arne_v Ekspert
12. oktober 2007 - 18:42 #11
ok
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester