Avatar billede jangravgaard Nybegynder
24. september 2003 - 15:25 Der er 14 kommentarer og
1 løsning

returnere en fil ved request

Hej

Jeg har en side (gem.jsp) som rammes af alle mine andre sider. Gem.jsp skal så returnere en billede fil (jpg el. gif) til den side som kalder min gem.jsp. Spørgsmålet er hvordan jeg får sendt billedfilen tilbage til siden som har kaldt gem.jsp. Skal jeg danne den i java/jsp som en stream og returnere den eller kan jeg sende den tilbage på en anden måde evt. hvor filen er skabt og bare ligger på serveren ?
Avatar billede arne_v Ekspert
24. september 2003 - 15:48 #1
JSP er vist ikke godt til at returnere binære filer.

Det er nemt med en servlet. Du sætter en passende content type læser
filen og returnerer bytes.

Alternativt kan du redirecte.
Avatar billede jangravgaard Nybegynder
24. september 2003 - 15:53 #2
så laver jeg bare en bean til det eller ??
har du nogle eksempler på at lave det i en servlet ?
Avatar billede arne_v Ekspert
24. september 2003 - 16:59 #3
Det hjælper ikke på JSP at lave en bean til det.

Og med en servlet er der sådan set ikke nogen grund til at lave en
bean.

Jeg tror kun at jeg har en servlet som returnerer text, men jeg
prøver lige at rette den til, så den kan returnere binary.
Avatar billede arne_v Ekspert
24. september 2003 - 19:12 #4
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class ShowPicture extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("image/gif");
        try {
          FileInputStream fis = new FileInputStream("C:\\" + request.getParameter("name") + ".gif");
          byte[] b = new byte[1000];
          int n;
          while((n = fis.read(b)) >= 0) {
              response.getOutputStream().write(b, 0, n);
          }
          fis.close();
        } catch (FileNotFoundException e) {
          e.printStackTrace();
        } catch (IOException e) {
          e.printStackTrace();
        }
    }
}
Avatar billede arne_v Ekspert
24. september 2003 - 19:12 #5
Avatar billede arne_v Ekspert
24. september 2003 - 19:13 #6
Den må være til at rette til så den passer til dit formål.
Avatar billede arne_v Ekspert
27. september 2003 - 12:25 #7
OK ?
Avatar billede jangravgaard Nybegynder
27. september 2003 - 12:27 #8
Hmm, har lidt problemer med import af :
import javax.servlet.*;
import javax.servlet.http.*;
Skal jeg have J2EE installeret for at kunne oversætte det ?
Avatar billede arne_v Ekspert
27. september 2003 - 12:30 #9
Du skal have en jar med de klasser i.

Personligt foretrækker jeg at downloade J2EE kittet fra SUN og compile
med lib/j2ee.jar derfra.
Avatar billede jangravgaard Nybegynder
27. september 2003 - 12:40 #10
okay, er igang med at downloade J2EE
Kan bare ikke forstå jeg ikke kan klare det med en bean...???
Avatar billede arne_v Ekspert
27. september 2003 - 12:52 #11
JSP egner sig kun til output af HTML.

Beans egner sig ikke til output.
Avatar billede arne_v Ekspert
27. september 2003 - 12:53 #12
Beans er "utility klasser".
Avatar billede jangravgaard Nybegynder
27. september 2003 - 12:56 #13
okay

det er bare så meget simplere at lave samme "stunt" i php:

<?php
Header ("Content-type:image/jpeg");
passthru("type test.jpg");
?>
Avatar billede arne_v Ekspert
27. september 2003 - 13:21 #14
Det er præcis det samme den servlet gør.

Den bruger bare 5 gange så mange linier til det.
Avatar billede arne_v Ekspert
27. september 2003 - 13:22 #15
PHP er designet til at være nemt.

JSP og servlet er designet til programmører.
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