Toon posts:

[JAVA] Weergeven image in firefox en internet explorer

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb het volgende stukje code gemaakt. Met dit stukje code kunnen plaatjes worden weergegeven door een servlet. Het probleem ligt nu in als ik naar de servlet verwijs in een html file dan laat in firefox het plaatje wel, maar in internet explorer niet.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ShowPicture extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        
        ServletContext sc = getServletContext();
        
        String filepath = "/var/www/java/";
        String filename = request.getRequestURI();
        
        String[] filesplit = filename.split("/");
        int slength = filesplit.length;
        String filet = filepath + filesplit[slength -1];
    
        // Get the MIME type of the image
        String mimeType = sc.getMimeType(filet);
        if (mimeType == null) {
            response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
            return;
        }
    
        // Set content type
        response.setContentType(mimeType);
    
        // Set content size
        File file = new File(filet);
        response.setContentLength((int)file.length());
    
        // Open the file and output streams
        FileInputStream in = new FileInputStream(file);
        OutputStream out = response.getOutputStream();
    
        // Copy the contents of the file to the output stream
        byte[] buf = new byte[1024];
        int count = 0;
        while ((count = in.read(buf)) >= 0) {
            out.write(buf, 0, count);
        }
        in.close();
        out.close();
    }
}


Van google werd ik ook niet veel wijzer maar ik heb het gevoel dat dit een header setting is.

  • momania
  • Registratie: Mei 2000
  • Laatst online: 16:10

momania

iPhone 30! Bam!

je moet nog wel even het volgende doen voor de out.close();
Java:
1
out.flush();

En wat als je de headers zelf zet?
Java:
1
2
response.setHeader("Content-Type", "image/jpeg");
response.setHeader("Content-Length", String.valueOf(filet.length()));

Neem je whisky mee, is het te weinig... *zucht*


  • windancer
  • Registratie: Maart 2000
  • Laatst online: 19-04 17:02
In de close() zit al een flush, die hoef je dus niet apart te doen.
momania schreef op dinsdag 15 november 2005 @ 17:24:
je moet nog wel even het volgende doen voor de out.close();
Java:
1
out.flush();

...

  • momania
  • Registratie: Mei 2000
  • Laatst online: 16:10

momania

iPhone 30! Bam!

windancer schreef op dinsdag 15 november 2005 @ 17:42:
In de close() zit al een flush, die hoef je dus niet apart te doen.
[...]
oh ja, was ff in de war met de BufferedOutputStream ;)

Neem je whisky mee, is het te weinig... *zucht*


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Welke response (headers) krijg je in de IE als je de servlet direct aanroept?

Verwijderd

Topicstarter
Het heeft niet gewerkt. Krijg ook bij firefox gezien als ik de servlet direct aanroep dat er fouten in de afbeelding zitten. De afbeelding word wel in 1 keer weergegeven. Toch maar misschien aan oplossing verzinnen.

Verwijderd

Topicstarter
wasigh schreef op woensdag 16 november 2005 @ 09:07:
Welke response (headers) krijg je in de IE als je de servlet direct aanroept?
Gewoon de header die er mee moet worden gegeven image/gif of image/png als ik servlet aanroep. Het probleem ligt meer als er vanuit een html file de servlet wordt aangeroepen dan krijg ik firefox netjes iets te zien, maar in internet explorer niet.

Verwijderd

Met welke extentie heb je het plaatje gemapped. Een gokje is dus dat IE niet extentie loos kan werken FF wel...

Verwijderd

Topicstarter
Verwijderd schreef op woensdag 16 november 2005 @ 09:36:
Met welke extentie heb je het plaatje gemapped. Een gokje is dus dat IE niet extentie loos kan werken FF wel...
Het plaatje wordt gewoon aangeroepen door /Servlet/ShowPicture/test.gif

  • TukkerTweaker
  • Registratie: November 2001
  • Laatst online: 21-04 15:56
Verwijderd schreef op woensdag 16 november 2005 @ 09:36:
Met welke extentie heb je het plaatje gemapped. Een gokje is dus dat IE niet extentie loos kan werken FF wel...
Nee, dit hoef geen problemen op te leveren.

response.setContentType("image/jpeg");

moet voldoende zijn, gebruik het zelf ook.

Verwijderd

Nog wat hersenspinsels:

- Probeer dezelfde url eens met een statisch plaatje (bewijst dat de oorzaak je servlet is)
- Gaat er misschien iets mis met conditional request..?

Verwijderd

Topicstarter
Het probleem is opgelost. Het lag in de html file waar ik een tag niet goed had afgesloten. bedankt voor alle aangedragen oplossingen.
Pagina: 1