Salve gente,
tramite degli esempi su internet sono riuscito a creare la mia servlet con relativa pagina JSP per l'upload di file. Vorrei sapere se fosse possibile includere una progress bar nella pagina di upload che mi indichi sullo stato della transazione.
Vi allego il mio codice:
SERVLET:
codice:
import com.oreilly.servlet.*;
//~--- JDK imports ------------------------------------------------------------
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ControllerFiles extends HttpServlet
{
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
// Istanziamo le variabili
// Il ServletContext sevirà per ricavare il MIME type del file uploadato
ServletContext context = getServletContext();
String forw = null;
try
{
// Stabiliamo la grandezza massima del file che vogliamo uploadare
int maxUploadSize = 100000000;
MultipartRequest multi = new MultipartRequest(request, ".", maxUploadSize);
String descrizione = multi.getParameter("text");
File myFile = multi.getFile("myFile");
String filePath = multi.getOriginalFileName("myFile");
String path = "C:\\files\\";
try
{
// ricaviamo i dati del file mediante un InputStream
FileInputStream inStream = new FileInputStream(myFile);
// stabiliamo dove andrà scritto il file
FileOutputStream outStream = new FileOutputStream(path + myFile.getName());
// salviamo il file nel percorso specificato
while (inStream.available() > 0)
{
outStream.write(inStream.read());
}
// chiudiamo gli stream
inStream.close();
outStream.close();
}
catch (FileNotFoundException fnfe)
{
fnfe.printStackTrace();
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
forw = "/done.jsp";
// mettiamo nella request i dati così da poterli ricavare dalla jsp
request.setAttribute("contentType", context.getMimeType(path + myFile.getName()));
request.setAttribute("text", descrizione);
request.setAttribute("path", path + myFile.getName());
request.setAttribute("size", Long.toString(myFile.length()) + " Bytes");
RequestDispatcher rd = request.getRequestDispatcher(forw);
rd.forward(request, response);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
Pagina JSP
codice:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<form align="center" method="POST" action="ControllerFiles" enctype="multipart/form-data">
<table align="center" border="2" style="border-collapse: collapse">
<tr>
<td align="center"><font size="4" color="yellow">Descrizione</font></td>
<td colspan="2">
<textarea name="text" cols="33" rows="2"></textarea>
</td>
</tr>
<tr>
<td align="center">File</td>
<td>
<input name="myFile" type="file">
</td>
<td align="center">
<input type="submit" name="salva" value="SALVA">
</td>
</tr>
</table>
</form>
</html>
WEB.XML DI TOMCAT
codice:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>ControllerFiles</servlet-name>
<servlet-class>ControllerFiles</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ControllerFiles</servlet-name>
<url-pattern>/ControllerFiles</url-pattern>
</servlet-mapping>
</web-app>