Premetto che sono partiolarment edi giuno di Java, devo però riuscire a fare il download di un file posizionato nella cartella WEB-INF del TOMCAT utilizzando una servlet.
Su internet ho trovato la seguente routine, compilandola ottengo degli errori relativi al getlogger. Cosa devo inserire al posto di "info.synaptica.ifaber.servlet.OpenMyFile"
il valore fname indica la cartella dove è salvato il file? In che modo la devo inserire?
Grazie
/**
* Servlet implementation class OpenFile
*/
public class OpenMyFile extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final int DEFAULT_BUFFER_SIZE = 10240; // 10KB.
public final static Logger logger = Logger.getLogger("info.synaptica.ifaber.servlet.Op enMyFile");
public OpenMyFile() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
try
{
String requestedFile = request.getParameter("fname");
if (requestedFile == null)
throw new Exception("Specificare nome file");
String sid = request.getSession().getId();
if (sid.equals(request.getParameter("sid")) == false) {
throw new Exception("Non autorizzato all’utilizzo della servlet");
}
File file = new File(URLDecoder.decode(requestedFile, "UTF-8"));
logger.info("File richiesto: " + URLDecoder.decode(requestedFile, "UTF-8"));
if ( (file.isDirectory())||(!(file.exists()))) {
throw new Exception("Il file richiesto non è stato trovato nell’archivio");
}
String contentType = getServletContext().getMimeType(file.getName());
if (contentType == null) {
contentType = "application/octet-stream";
}
response.reset();
response.setBufferSize(DEFAULT_BUFFER_SIZE);
response.setContentType(contentType);
response.setContentLength((int) file.length());
response.setHeader("Content-Disposition", "attachment; filename=\"" + file.getName() + "\"");
// Prepare streams.
BufferedInputStream input = null;
BufferedOutputStream output = null;
try {
// Open streams.
FileInputStream fi = new FileInputStream(file);
input = new BufferedInputStream(fi, DEFAULT_BUFFER_SIZE);
output = new BufferedOutputStream(response.getOutputStream(), DEFAULT_BUFFER_SIZE);
// Write file contents to response.
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
int length;
while ((length = input.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
} finally {
// Gently close streams.
close(output);
close(input);
}
} catch (Exception E) {
response.getWriter().write("Rilevato problema durante la richiesta del file: " + E.getMessage());
//response.flushBuffer();
}
}
private static void close(Closeable resource) {
if (resource != null) {
try {
resource.close();
} catch (IOException e) {
// Do your thing with the exception. Print it, log it or mail it.
e.printStackTrace();
}
}
}
}

Rispondi quotando
