Un utente tramite un file upload da pagina html invia un'immagine dal suo file system ad una servlet. La servlet deve memorizzare l'immagine da qualche parte e poi deve poterla restituire al client.
Uso eclipse con apache tomcat 6.0 sotto window 7 ma non riesco a a fare funzionare le cose.
Esattamente appoggiandomi su una libreria esterna leggo l'immagine dell'utente e riesco a salvarla nel workspace di Eclipse (e' giusto salvarla qui?).
Ma poi non riesco a leggere l'immagine? Viene restituito il contenuto html della servlet di risposta senza visualizzare l'immagine.
Vi prego aiutatemi.
Page html:
La servlet:codice:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Immagini</title> <script type="text/javascript"> function gestisciImmagine() { var nome_immagine = document.upload.file_inviato.value; if(!nome_immagine.match(/(\.jpg|\.jpeg|\.png)$/i)) { alert("Non hai selezionato un'immagine o hai selezionato un'immagine in un formato non valido"); return;//naturalmente qui andrebbe gestito meglio, evitando la submit ma e' solo una prova } } </script> </head> <body> Seleziona un file da memorizzare nel database:</p> <form name="upload" enctype="multipart/form-data" method="post" action="/ProvaServlet/CaricareImmagini"> <input type="file" name="file_inviato" onChange="gestisciImmagine();" value=""/> <input type="submit" name="invia" value="Invia file"/> </p> </form> </body> </html>
La libreria esterna e' reperibile qui: http://www.servlets.com/resources/co...let/index.htmlcodice:import java.io.*; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.oreilly.servlet.*; //import com.oreilly.servlet.multipart.*; /** * Servlet implementation class CaricareImmagini */ public class CaricareImmagini extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub MultipartRequest multi = new MultipartRequest(request,"."); File f = multi.getFile("file_inviato"); String fileName = multi.getFilesystemName("file_inviato"); //il contenuto di fileName lo posso salvare in un database if (f!=null) { File fOUT = new File("C:\\Users\\Nick\\workspace\\ProvaServlet\\WebContent\\Immagini\\",fileName);//1 //il path sopra effettivamente manda l'immagine nel workspace FileInputStream fIS = new FileInputStream(f); //l'inputstream FIS legge dal file f FileOutputStream fOS = new FileOutputStream(fOUT);// while (fIS.available()>0)//l'inputstream fIS legge dal file f e l'outputstream FOS scrive sul file fOUT fOS.write(fIS.read()); fIS.close(); fOS.close(); } response.setContentType( "text/html" ); response.setHeader("Expires", System.currentTimeMillis()+""); PrintWriter out = response.getWriter(); // send HTML page to client out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">"); out.println( "<html>" ); // head section of document out.println( "<head>" ); out.println( "<title>A Simple Servlet Example</title>" ); out.println( "</head>" ); // body section of document out.println( "<body>" ); out.println( "<h1>Visualizzo l'immagine</h1>" ); String g="http://localhost:8080/ProvaServlet/Immagini/"+fileName; String h="src="+"\""+g+"\""; out.println( "<img "+h+"/>" ); out.println( "</body>" ); out.println( "</html>" ); out.close(); // close stream to complete the page*/ } }

Rispondi quotando