Toon posts:

[Java Servlet] GIF sturen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer mijn Servlet een GIF naar de browser te sturen zodat die hem direct kan laten zien. Daarvoor gebruik ik deze code:
code:
1
2
3
4
5
6
7
         response.setContentType("image/gif");
         OutputStream out = response.getOutputStream();
         InputStream is = context.getResourceAsStream("/WEB-INF/upload/image.gif");
         byte[] buf = new byte[1024];
         while(is.read(buf) > 0) {
            out.write(buf);
         }

Maar dit werkt niet, helaas. Als ik de servlet via Mozilla opvraag zegt 'ie dat het geen valide GIF plaatje is en IE laat ook niets zien.

Het vreemde is dat als ik het met wget download het gewoon goed werkt :? Het moet dus iets met de headers zijn, volgens wget worden de volgende headers gezonden:
code:
1
2
3
4
5
6
HTTP/1.0 200 OK
Server: Resin/2.1.4
Set-Cookie: JSESSIONID=a3odQb3DeBya; Path=/
Content-Type: image/gif
Content-Length: 3072
Date: Sat, 31 Aug 2002 15:46:00 GMT


Iemand hier ervaring mee?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Je schrijft steeds de hele 'buf' weg. Het is een tijd geleden dat ik ermee heb zitten spelen, maar gaat dat wel helemaal goed? Als de buf niet helemaal gevuld is in de laatste 'read' schrijf je dan volgens mij teveel weg...

Ik doe het zo:
code:
1
2
3
4
5
6
7
8
9
10
11
12
  public void write(OutputStream stream, InputStream input, int bufferSize)  throws IOException {    
    byte[] buffer = new byte[bufferSize];
    int n;

    while ((n = input.read(buffer, 0, buffer.length)) != -1) {
      stream.write(buffer, 0, n);
    }

    stream.flush();
    close(stream);
    close(input);
  }

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
|:( Tijdens het eten bedacht ik ineens dat ik een CompressionFilter gebruik (voor gzip compressie). Toen ik die er af haalde werkte het perfect, toch bedankt (ik gebruik je code wel, is wel zo netjes).