1. From the jsp page select the image (image path) for uploading. Let the preview button be a submit button .
<form name ="frm" method="POST" action="$link.setAction('graphics')" enctype="multipart/form-data"> <INPUT TYPE ="hidden" NAME ="filePath" size="39" value="C:\Program Files\Tomcat 5.0\webapps\cevm\uploadedimages\"/> <input type="submit" value="Preview" style="width:80" onClick="setHidValue()" > function setHidValue() { document.frm.paramPassed.value="preview"; } <input type="hidden" name="paramPassed" size="25"/> ie when u click the preview button a java script function is called, in which we assign a value to the hidden variable as preview. this value is passed to the action file. ur struts config file willl be <form-bean name="graphicsForm" type="GraphicsForm"/> <action path="/graphics" type="GraphicsInfoDetailsAction" name="graphicsForm" scope="request" input="/submit.vm"> <forward name="preview" path="/preview.vm" /> </action> ur graphicsForm is import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import org.apache.struts.upload.FormFile; import org.apache.struts.upload.MultipartRequestHandler; public class GraphicsForm extends ActionForm { public static final String ERROR_PROPERTY_MAX_LENGTH_EXCEEDED = "MaxLengthExceeded"; /** * The value of the text the user has sent as form data */ protected String theText; /** * The value of the embedded query string parameter */ protected String queryParam; /** * Whether or not to write to a file */ protected boolean writeFile; /** * The file that the user has uploaded */ protected FormFile logoFile; /** * The file path to write to */ protected String filePath; /** * Retrieve the value of the text the user has sent as form data */ protected String paramPassed; public String getParamPassed() { return paramPassed; } public void setParamPassed(String argParamPassed) { this.paramPassed=argParamPassed; } /** * Retrieve the value of the query string parameter */ public String getQueryParam() { // queryParam="Successful"; return queryParam; } /** * Set the value of the query string parameter */ public void setQueryParam(String queryParam) { this.queryParam = queryParam; } /** * Retrieve a representation of the logoFile the user has uploaded */ public FormFile getLogoFile() { return logoFile; } /** * Set a representation of the logoFile the user has uploaded */ public void setLogoFile(FormFile logoFile) { this.logoFile = logoFile; } /** * Set whether or not to write to a file */ public void setWriteFile(boolean writeFile) { this.writeFile = writeFile; } /** * Get whether or not to write to a file */ public boolean getWriteFile() { return writeFile; } /** * Set the path to write a file to */ public void setFilePath(String filePath) { this.filePath = filePath; } /** * Get the path to write a file to */ public String getFilePath() { return filePath; } public void reset() { writeFile = false; } /** * Check to make sure the client hasn't exceeded the maximum allowed upload size inside of this * validate method. */ public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = null; //has the maximum length been exceeded? Boolean maxLengthExceeded = (Boolean) request.getAttribute(MultipartRequestHandler.ATTRIBUTE_MAX_LENGTH_EXCEEDED); if ((maxLengthExceeded != null) && (maxLengthExceeded.booleanValue())) { errors = new ActionErrors(); errors.add(ERROR_PROPERTY_MAX_LENGTH_EXCEEDED, new ActionError("maxLengthExceeded")); } return errors; } } ur action file will be import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Date; import java.util.Calendar; import java.util.GregorianCalendar; import java.text.SimpleDateFormat; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.upload.FormFile; import org.apache.struts.action.ActionServlet; import java.sql.Connection; import javax.sql.DataSource; import java.sql.ResultSet; import java.sql.Statement; import java.sql.SQLException; import java.lang.String; import java.util.ArrayList; public final class GraphicsInfoDetailsAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(false); if (form instanceof GraphicsForm) { //this line is here for when the input page is upload-utf8.jsp, //it sets the correct character encoding for the response String encoding = request.getCharacterEncoding(); if ((encoding != null) && (encoding.equalsIgnoreCase("utf-8"))) { response.setContentType("text/html; charset=utf-8"); } GraphicsForm theForm = (GraphicsForm) form; String param1 = theForm.getParamPassed(); String target="success"; String submitName=null; String param2="start"; FormFile file = theForm.getLogoFile(); //retrieve the file representation if(param2.equals("preview")) { target="preview"; //retrieve the file name fileName= file.getFileName(); session.putValue("fileName",fileName); //retrieve the content type String contentType = file.getContentType(); String fileUploadPath = theForm.getFilePath(); String fileToWrite = fileUploadPath + fileName; session.putValue("imagePath",fileToWrite ); boolean writeFile = true; //retrieve the file size String size = (file.getFileSize() + " bytes"); String data = null; String fname = null; String fpath = null; try { //retrieve the file data ByteArrayOutputStream baos = new ByteArrayOutputStream(); InputStream stream = file.getInputStream(); if (!writeFile) { //only write files out that are less than 1MB if (file.getFileSize() < (4*1024000)) { byte[] buffer = new byte[8192]; int bytesRead = 0; while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) { baos.write(buffer, 0, bytesRead); } data = new String(baos.toByteArray()); } else { data = new String("The file is greater than 4MB, " + " and has not been written to stream." + " File Size: " + file.getFileSize() + " bytes. This is a" + " limitation of this particular web application, hard-coded" + " in org.apache.struts.webapp.upload.UploadAction"); } } else { //write the file to the file specified OutputStream bos = new FileOutputStream(fileToWrite); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) { bos.write(buffer, 0, bytesRead); } bos.close(); data = "The file has been written to \"" + theForm.getFilePath() + "\""; fpath = fileUploadPath; } //close the stream stream.close(); } catch (FileNotFoundException fnfe) { return null; } catch (IOException ioe) { return null; } } //destroy the temporary file created // file.destroy(); return (mapping.findForward(target)); } return null; } } from the action file i am putting the value of the filepath into a session imagePath. this session is called in the below jsp file for displaying the preview of the image. please note that we are displaying the image of a uploaded file.this program is for uploading images 2.Below will be some contents of ur jsp page where u need to display your preview image. function getURLString() { var fn = document.frm.T1.value; var Img = new Image(); Img.src = fn; document.frm.imageName.src = Img.src; } The function is a java script which is called when the jsp page loads. ie call getURLString() when this page loads and as shown below. <BODY bgColor="#ffffff" onLoad="getURLString()"> There should be a hidden variable of T1 whose value is the path of the image (eg c:\\image.jpg) in ur jsp page as shown below. <input type=hidden name="T1" size="39" value=imagePath> Last ur jsp file should contain a image tag for display of image. <img border="0" name ="imageName" src=""> The value of the hidden name (imagePath) should be passed from the java action file. ----- Original Message ----- From: "uma.k" <[EMAIL PROTECTED]> To: "'Struts Users Mailing List'" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> Sent: Saturday, December 18, 2004 11:54 AM Subject: RE: Preview of an Image and text > Hi Frank, > Thanks for the reply. Your solution works good if I have to show preview in > the same page but I what if I need to show preview in the next JSP? How do I > carry the values/images? > > Uma > > -----Original Message----- > From: Frank W. Zammetti [mailto:[EMAIL PROTECTED] > Sent: Friday, December 17, 2004 10:44 PM > To: Struts Users Mailing List > Subject: Re: Preview of an Image and text > > > You might consider doing it all on the client... > > <html> > <head> > <title>test</title> > <script> > function preview() { > lyrPreview.innerHTML = ""; > lyrPreview.innerHTML += "Some message text...<br>"; > lyrPreview.innerHTML += "<img src=\"file://" + theForm.theFile.value + > "\">"; > } > </script> > </head> > <body> > Select file, then click button to preview:<br> > <form name="theForm"> > <input type="file" name="theFile"> > <input type="button" onClick="preview();" value="Preview message"> > </form> > <br><br> > <u>Preview:</u><br><br> > <span id="lyrPreview"></span> > </body> > </html> > > Works on IE, can't say whether it does on anything else. Of course, > this will only work if you have enough information to construct the > complete preview on the client at that point, but you could > alternatively submit the form, then in the reply construct the file:// > reference to the image as I've done above. That would probably give you > the best of both worlds, and also remove any cross-browser concerns. > But, if you can do it without touching the server, so much the better I > figure. > > -- > Frank W. Zammetti > Founder and Chief Software Architect > Omnytex Technologies > http://www.omnytex.com > > uma.k wrote: > > Hi, > > I have a form where the user is given the option to select a file to > > upload(normally gif or jpg) before the user submits the file to the > server, > > I wanted to show him a preview of his message and image. > > > > How do I do that? Where do I store the image temporarly? > > > > Any solutions? > > > > Uma > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]