Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [JSP] DownLoad di file con Estenzione non comune

    Ciao a tutti, sto realizzanto un sito web con le JSP. Volevo porvi una domanda! In una pagina(JSP) del mio sito è possibile fare il download di file; il problema è che i file che devo far scaricare hanno una estensione non comune (.i54). In sostanza non sono file MimeType, ed internet explorer non permette il loro download. Come posso risolvere questo strano problema?
    Ciao a tutti e grazie!!!
    Alessio

  2. #2
    Aiuto.......

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Lo risolvi imponendo alla HttpResponse si avere un MIME-TYPE di tipo octet/stream:
    codice:
    response.setContentType("application/octet-stream; name=\"NomeFile.i54\"");
    response.setCharacterEncoding("UTF-8");
    response.addHeader("content-disposition", "attachment; filename=\"NomeFile.i54\"");
          
    FileInputStream fis = new FileInputStream( "percorso/al/file/NomeFile.i54" );
    byte[] dati = new byte[ fis.available() ];
    fis.read( dati );
    fis.close();
    response.setContentLength( dati.length );
    ServletOutputStream out = response.getOutputStream();
    out.write( dati );
    out.flush();
    out.close();
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Ma come mai mi dà questo errore?

    getWriter() has already been called for this response


    Tomcat mi restituisce questa scermata:

    type Exception report

    message

    description The server encountered an internal error () that prevented it from fulfilling this request.

    exception

    org.apache.jasper.JasperException: An exception occurred processing JSP page /last.jsp at line 55

    52: fis.read( dati );
    53: fis.close();
    54: response.setContentLength( dati.length );
    55: ServletOutputStream output = response.getOutputStream();
    56: output.write( dati );
    57: output.flush();
    58: output.close();


    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handle JspException(JspServletWrapper.java:524)
    org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:429)
    org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
    Multimedia.service(Multimedia.java:21)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:803)

    root cause

    java.lang.IllegalStateException: getWriter() has already been called for this response
    org.apache.catalina.connector.Response.getOutputSt ream(Response.java:573)
    org.apache.catalina.connector.ResponseFacade.getOu tputStream(ResponseFacade.java:183)
    org.apache.jsp.last_jsp._jspService(last_jsp.java: 70)
    org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
    org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:393)
    org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
    Multimedia.service(Multimedia.java:21)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:803)

    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.
    La mia JSP completa è la sequente:
    <%@ page import="java.util.*,java.io.*"%>
    <%
    response.setContentType("application/octet-stream; name=\"Bergamon-Lavanda.i54\"");
    response.setCharacterEncoding("UTF-8");
    response.addHeader("content-disposition", "attachment; filename=\"Bergamon-Lavanda.i54\"");

    FileInputStream fis = new FileInputStream( "C:/Programmi/Apache Software Foundation/Tomcat 6.0/webapps/multimedia/Bergamon-Lavanda.i54" );
    byte[] dati = new byte[ fis.available() ];
    fis.read( dati );
    fis.close();
    response.setContentLength( dati.length );
    ServletOutputStream output = response.getOutputStream();
    output.write( dati );
    output.flush();
    output.close();

    %>
    Grazie mille per l'attenzione!!
    Ciao

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Ehm... avevo sottointeso che dovevi richiamare una Servlet...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Ciao, grazie dell'aiuto. Adesso il problema è un'altro, il tuo codice funziona benissimo su firefox ma su explorer non và! In sostanza su explorer mi chiede se voglio scaricare il link della pagina.

    Per capirc,i su Internet Explorer, se questa è l'URL della pagina dove c'è il pulsante DOWNLOAD:

    http://localhost:8080/multimedia/mul...ction=DownLoad

    cliccando su DOWNLOAD la cui URL è:

    http://localhost:8080/multimedia/mul...tion=Last&op=0

    Mi parte il download di IE come si vede dall'immagine.


    Quando clicco su scarica mi dice giustamente che è impossibile scaricare.

    Da cosa può dipendere?? L'ho sempre pensato che IE fosse un browser mediocre... ecco la conferma.

    Ciao
    Immagini allegate Immagini allegate

  7. #7
    HELP!!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.