Vedremo come aprire o salvare un file con Java
Scriviamo subito la nostra classe, la chiameremo ApriPdf
public class ApriPdf extends HttpServlet{
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
OutputStream out = null;
String filePath = "posizione del file";
File file = new File(filePath);
if(file.exists()){
out = response.getOutputStream();
response.setContentType("application/pdf;charset=UTF-8");
response.setHeader("Content-Disposition","inline;filename=Nome_del_file.pdf");
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[4096];
try {
for (int readNum; (readNum = fis.read(buf)) != -1;) {
bos.write(buf, 0, readNum);
}
} catch (IOException ex) {
log.debug(ex.getMessage());
ex.printStackTrace();
}
byte[] bytes = bos.toByteArray();
int lengthRead = 0;
InputStream is = new ByteArrayInputStream(bytes);
while ((lengthRead = is.read(buf)) > 0) {
out.write(buf);
}
fis.close();
bos.close();
is.close();
out.close();
}
}
}
Tramite l’header potremo decidere se eseguire il download del nostro file PDF (attachment), oppure se visualizzarlo nella finestra del browser (inline).
Ci manca a questo punto la configurazione della servlet nel file web.xml
<servlet>
<servlet-name>ApriPdf</servlet-name>
<servlet-class>posizione.logica.della.classe.ApriPdf</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ApriPdf</servlet-name>
<url-pattern>ApriPdf</url-pattern>
</servlet-mapping>
Basta così. Ci basterà solo richiamare la nostra servlet dall’indirizzo fisico che abbiamo creato http://host/ApriPdf dal browser per visualizzare o fare il download del file.