java mysql struts2

java - Vista previa de la imagen antes de cargarla en struts 2.3



mysql struts2 (1)

Quiero cargar un archivo en la base de datos usando struts2 pero el problema es que quiero mostrar la foto cuando selecciono la foto en la misma página.

La imagen mostrará los del programa.

index.jsp

<s:form action="UploadAction.action" enctype="multipart/form-data"> <s:textfield name="ename" required="true" label="Emp Name" /> <s:file name="photo" label="Photo" required="true" /> <s:submit value="U P L O A D" /> </s:form>

UAction.java

public class UAction { String ename, photo, msg; public String execute() throws Exception { msg = com.db.Admin.addemp(ename, photo); setEname(""); return "SUCCESS"; }

Photo.java

public class Photo extends HttpServlet { private static final long serialVersionUID = 1L; protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String empno = request.getParameter("e"); try { ResultSet rs = com.db.Admin.getPhoto(empno); if (rs.next()) { Blob ph = (Blob) rs.getBlob(1); byte data[] = ph.getBytes(1, (int) ph.length()); ServletOutputStream out = response.getOutputStream(); out.write(data); } } catch (Exception e) { e.getMessage(); } }

}

Admin.java

public static String addemp(String ename, String photo) { try { CallableStatement cs = connect().prepareCall("{call addEmp(?,?,?)}"); cs.setString(1, ename); FileInputStream r = new FileInputStream(photo); cs.setBinaryStream(2, r); cs.registerOutParameter(3, Types.VARCHAR); cs.execute(); return cs.getString(3); } catch (Exception e) { return e.getMessage(); } } public static ResultSet getData() throws Exception { return connect().prepareCall("{call getData()}").executeQuery(); } public static ResultSet getPhoto(String empno) throws Exception { CallableStatement cs = connect().prepareCall("{call getPhoto(?)}"); cs.setString(1, empno); return cs.executeQuery(); }

}


Esto debe hacerse con algún código de JavaScript.

<img id="imagePlaceHolder" alt="your image" width="100" height="100" /> <s:file name="photo" label="Photo" required="true" onchange="document.getElementById(''imagePlaceHolder'').src = window.URL.createObjectURL(this.files[0])" />

Puede encontrar más soluciones en Vista previa de una imagen antes de que se cargue