Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    2

    [JSP] gestire salvataggio file con servlet

    Salve a tutti, sto sviluppando un'applicazione jsp che prevede la possibilitā di scaricare i file presenti in una cartella. Io vorrei evitare di usare il link diretto ai file, e gestire il tutto tramite appunto jsp.

    per fare questo, leggendo in giro, devo inserire nel codice della pagina:

    codice:
    <% 
    response.setContentType("APPLICATION/OCTET-STREAM");
    response.setHeader("Content-Disposition", "attachment; filename=\"" + nomedelfile + "\"");
    ServletOutputStream os = response.getOutputStream();
      
                 
    java.io.FileInputStream fileInputStream = new java.io.FileInputStream("\\"+nomedelfile);
      int data;
      while ((data=fileInputStream.read()) != -1) {
        os.write(data);
      }
    
      
      fileInputStream.close();
      os.flush();
      os.close();
    
    }
    catch(Exception genEx){
    out.println(genEx.getMessage());
    }
    %>
    tuttavia in questo modo ottengo l'errore:
    codice:
    getOutputStream() has already been called for this response
    dovuto al fatto che le jsp impiegano giā l'output nel momento in cui vengono lanciate.
    Sempre leggendo in giro, tra le varie soluzioni suggerite vi č quella di far gestire tutto da una servlet, evitando in questo modo di occupare l'out della response. Ma non mi č ben chiaro questo ultimo passaggio: si intende dire che devo scrivere un javabean con un metodo "doDownload (request, response)", infilandoci il codice che ho scritto sopra? E in quel caso, poi, come potrei assegnare il bean al download del file (l'utente dovrebbe comunque cliccare un pulsante o qualsiasi altra cosa che sta in ogni caso su una jsp...)? Cosa si intende, insomma, in maniera pratica, la frase "fai gestire tutto da una servlet"?
    Spero di essermi spiegato abbastanza chiaramente, grazie per ogni eventuale aiuto!

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    42
    Magari dico una fesseria, ma hai provato a togliere

    codice:
    os.flush()
    Capita che nel response.getOutputStream() con la chiamata flush() venga inviato lo stream creando un errore su

    codice:
    os.close()
    Non ne sono sicuro, ma fai un tentativo

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    2
    Grazie, ho provato, ma dā sempre l'errore. Ho trovato questo post che spiega secondo me bene come utilizzare le servlet invece che una pagina jsp per gestire il salvataggio del file, lo linko qui magari puō essere utile a qualcun altro: FileServlet

    Grazie ancora, cmq.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.