Avatar billede margitbork Nybegynder
10. august 2007 - 10:27 Der er 3 kommentarer og
1 løsning

Download af fil til browser

Jeg har en java applikation hvor man kan klikke på et link som giver download af en fil. Jeg har lavet det således:
  private static void doDownload(HttpServletResponse response, InputStream in){

    response.setContentType("application/txt");
   
    ServletOutputStream outs=null;
    try {

//set the header and also the Name so that customer will be
// prompted to save or open
//by external associated programs
 
  response.setHeader ("Content-Disposition", "attachment; filename=filecontent.txt");

// Open an input stream and post the contents through the
// servlet output stream to the customer
 
    outs = response.getOutputStream();

  int bit =0;

    while ( (bit=in.read()) != -1)
    {
      outs.write(bit);
    }
  }catch (Exception io) {
    io.printStackTrace(System.out);
  }finally{   
    try
    {
      if(outs!=null){
        outs.flush();
      }
    }
    catch (IOException e)
    {
      log.error(e.getMessage());
    }
    try
    {
      if(outs!=null){
        outs.close();
      }
    }
    catch (IOException e)
    {
      log.error(e.getMessage());
    }   
  } 
}

Det virker fint fra min maskine på IE7, men mine kollegaer med IE6 får en mærkelig fejl. Hvis de forsøger at åbne filen, får de at vide at den ikke findes, og efterfølgende er det umuligt for dem at komme ind i browserens tools>Internet Options.

Hvad skal jeg gøre ?
Avatar billede christofferhp Nybegynder
10. august 2007 - 11:27 #1
Er der ikke noget med at i IE6 så kalder den appender <original filnavn>[1].<filtype> ?

Ved ikke om det kan hjælpe dig men det var da måske en mulighed.
Avatar billede margitbork Nybegynder
10. august 2007 - 11:38 #2
Jeg får fint dialogboksen hvor jeg skal vælge om jeg vil åbne eller gemme filen.
hvis jeg vælger åbne, åbner notepad med en besked om at filen ikke findes. Hvis jeg vælger gemme, så gemmes filen fint nok, og jeg kan se indholdet. Men i begge tilfælde kan jeg ikke efterfølgende komme ind i Tools>Internet Options.

Kan nogen med internet explorer 6 teste min ovenstående kode og sige om de får samme problem ?
Kan det have nogen betydning hvilken server det kører på ? - vi anvender en SunONE server.
Kan det betyde noget om man er placeret bag en proxyserver ?
Avatar billede margitbork Nybegynder
10. august 2007 - 11:41 #3
Jeg ved ikke hvad du mener med at den kalder appender<original filnavn...
Jeg har ikke på noget tidspunkt en fysisk på min server. Jeg har et filnavn til en fil der er placeret på en anden server, i en zip-fil. Jeg får så via MQ en datastrøm med indholdet af denne fil.
Dette indhold (min inputstream) fodrer jeg så til responsets outputstream. Det originale filnavn bør ikke have nogen betydning for denne process. - eller hvad ?
Avatar billede margitbork Nybegynder
10. august 2007 - 12:55 #4
Hurra - jeg har fået en løsning.
Headeren så således ud:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Expires: Wed, 31 Dec 1969 23:59:59 GMT
Content-Disposition: attachment; filename=filecontent.txt
Content-Type: application/txt
Transfer-Encoding: chunked
Date: Fri, 10 Aug 2007 10:15:30 GMT
Server: Apache Coyote/1.0

Cache-Control er sat til Private, og nu virker det...Jubiiii
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