Duqnue, dovresti gestire tutto da Servlet. Ti spiego, ti crei una Servlet magari la chiami ServletDownload dove per qualsiasi download gli accodi il path del file che deve scaricare.
Qui ti posto una servlet per un file .zip, per un'altro tipo di file basta modificare gli header,
comuqnue il meccanismo principale è questo. Il codice della Servlet:
Codice:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String path = request.getAttribute("file").toString();
//Apro il file
FileInputStream inStream = new FileInputStream(path);
//Setto gli header della risposta per il download ZIP (in questo caso)
response.setContentType("application/zip");
response.setContentLength(inStream.available());
response.addHeader("Content-Disposition", "attachment; filename="+path);
response.addHeader("Content-Transfer-Encoding", "binary");
response.addHeader("Content-Description", "File Transfer");
//Leggo il file
byte [] data = new byte[inStream.available()];
inStream.read(data);
//Apro lo stream per avviare il download
ServletOutputStream out = response.getOutputStream();
out.write(data);//Invio il file
out.flush();
out.close();
}
Ora quando dovrai scrivere il link del download basta fare cosi:
Codice:
<a href="http://www.mioserver.it/ServletDownload?file=miofile.zip">Scarica file</a>
Il codice non l'ho purtroppo testato, potrebbe esserci qulache errore, facci sapere
Ciao