aspose file tools*
The moose likes Struts and the fly likes Struts 2 Fileupload problem Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Frameworks » Struts
Bookmark "Struts 2 Fileupload problem" Watch "Struts 2 Fileupload problem" New topic
Author

Struts 2 Fileupload problem

Sharad Sharma
Greenhorn

Joined: Jun 27, 2008
Posts: 4
Hi,
I am stuck with file upload i have searched many forums and
websites they all seem to give almost the same code. But none of them
worked out for me. I have tried my best to upload a file but every
time I get a message. There are no error messages though

INFO: Removing file upload \tmp
\upload__37055a77_11ac9568d10__7ffe_00000033.tmp


and file does not gets uploaded. only a folder named tmp gets created
in root directory of my web server. Can someone please give me
location of a working example.

In
http://www.roseindia.net/struts/struts2/struts-2-file-upload.shtml

they have mentioned that
"The File Upload Interceptor actually deletes the the upload, once the
action is executed"

If this is true then why does it behaves like this. Please help I am
kind of stuck with this since last 2 weeks
Jaffer Shareef
Greenhorn

Joined: Jun 27, 2008
Posts: 4
Try this,

Form
-----
String FormFile fileToUpload;

JSP
----
<html:form method="post" action="your actionpath" enctype="multipart/form-data" >

<html:file name="SomeForm" property="fileToUpload" onchange="document.forms[0].submit();/>

This is the struts way to upload a file.
Let me know if this works.
Merrill Higginson
Ranch Hand

Joined: Feb 15, 2005
Posts: 4864
Sharad,

Struts delivers to your action class a java.io.File containing the uploaded data. Once the execute method of your action has executed, Struts deletes this temporary file. That means it's up to you to do something with the uploaded file in the execute method of your Action class: copy it to a file in a permanent location, copy it to a BLOB in a database, display its contents, etc. If you do nothing, the file just gets deleted.

Jaffer,

Sharad is trying to do a Struts 2 file upload, so your method relying on Struts 1 tags would not work in this case.


Merrill
Consultant, Sima Solutions
Sharad Sharma
Greenhorn

Joined: Jun 27, 2008
Posts: 4
thanks merril.. i never thought of the same.. but in the code as you can see there is only

can you please help me out how to do the same.. i m not using any database.. just taking file from one location and putting in another.
Merrill Higginson
Ranch Hand

Joined: Feb 15, 2005
Posts: 4864
Below is a link that shows you how to copy data from one file to another.

http://exampledepot.com/egs/java.io/CopyFile.html
Sharad Sharma
Greenhorn

Joined: Jun 27, 2008
Posts: 4
thanks a lot that helped..
Suresh Malhotra
Greenhorn

Joined: Aug 21, 2007
Posts: 5
Try this,

Form
-----
String FormFile fileToUpload;

JSP
----
<html:form method="post" action="your actionpath" enctype="multipart/form-data" >

<html:file name="SomeForm" property="fileToUpload" onchange="document.forms[0].submit();/>

This is the struts way to upload a file.
I think it should work.
[ August 26, 2008: Message edited by: David O'Meara ]
Merrill Higginson
Ranch Hand

Joined: Feb 15, 2005
Posts: 4864
Suresh,

What you posted is the Struts 1 way to upload a file. Sharad is using Struts 2, so it won't work in this case.
Thamayanthi Guhan
Greenhorn

Joined: Feb 09, 2009
Posts: 8
Hi,

I am trying file upload in struts2.18. It is not working i am always getting null in the action class. here is the code block


--
struts.xml


jsp page


action class;


result jsp:


--

Could anyone please help me? I searcingfor thesolution all blogs and goodle, but still now no luck
Thanks
Thamayanthi
Ben sassi mohammed
Greenhorn

Joined: Nov 28, 2009
Posts: 6
hello
i have problem white struts 2 validator

Tags <s:fielderror> you told me works well. Except that
Now I have duplicate messages (I thought the message "by
Default "no longer present).

please looks attchments

thank you in advance


[Thumbnail for valdator struts.jpg]

galne vaibhav
Greenhorn

Joined: Nov 30, 2009
Posts: 9
Hi i have face the same problem and sorted out here is the solution:

Struts2 reads the file prepare tmp file and delete the tmp file after execute method
solution:

jsp code


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<s:head />
</head>
<body>
<s:form action="fileUpload" method="post" enctype="multipart/form-data" >
<s:file name="userImage" label="User Image" />
<s:submit />
</s:form>
</body>
</html>

Action Class

import java.io.File;

import org.apache.commons.io.FileUtils;

import com.opensymphony.xwork2.ActionSupport;

public class FileUploadAction extends ActionSupport{



/**
* Added serial version id
*/
private static final long serialVersionUID = -5138905699893319423L;

private File userImage;

private String userImageContentType;

private String userImageFileName;

private File upload;//The actual file
private String uploadContentType; //The content type of the file
private String uploadFileName; //The uploaded file name
private String fileCaption;//The caption of the file entered by user

public String execute() throws Exception {

try{

String fullFileName = "/opt/glassfish/domains/domain1/logs/myFile.txt;
File theFile = new File(fullFileName);

FileUtils.copyFile(userImage, theFile);

} catch (Exception e) {

addActionError(e.getMessage());

}


return SUCCESS;

}
public String getFileCaption() {
return fileCaption;
}
public void setFileCaption(String fileCaption) {
this.fileCaption = fileCaption;
}
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
public String getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}


public File getUserImage() {
return userImage;
}

public void setUserImage(File userImage) {
this.userImage = userImage;
}

public String getUserImageContentType() {
return userImageContentType;
}

public void setUserImageContentType(String userImageContentType) {
this.userImageContentType = userImageContentType;
}

public String getUserImageFileName() {
return userImageFileName;
}

public void setUserImageFileName(String userImageFileName) {
this.userImageFileName = userImageFileName;
}



}

struts xml

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">


<struts>
<package name="fileUploadPackage" extends="struts-default">
<interceptors>
<interceptor-stack name="fileUploadStack">
<interceptor-ref name="exception" />
<interceptor-ref name="alias" />
<interceptor-ref name="servletConfig" />
<interceptor-ref name="prepare" />
<interceptor-ref name="i18n" />
<interceptor-ref name="chain" />
<interceptor-ref name="debugging" />
<interceptor-ref name="profiling" />
<interceptor-ref name="scopedModelDriven" />
<interceptor-ref name="modelDriven" />
<interceptor-ref name="fileUpload">
<param name="maximumSize">10240</param>
<param name="allowedTypes">image/jpeg,image/gif,image/png</param>
</interceptor-ref>
<interceptor-ref name="checkbox" />
<interceptor-ref name="staticParams" />
<interceptor-ref name="actionMappingParams" />
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..*</param>
</interceptor-ref>
<interceptor-ref name="conversionError" />
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>

<action name="fileUpload" class="vaannila.FileUploadAction">
<result name="input">/index.jsp</result>
<result name="success">/success.jsp</result>
</action>
</package>
</struts>

best of luck.

galne vaibhav
Greenhorn

Joined: Nov 30, 2009
Posts: 9
Ben sassi mohammed wrote:hello
i have problem white struts 2 validator

Tags <s:fielderror> you told me works well. Except that
Now I have duplicate messages (I thought the message "by
Default "no longer present).

please looks attchments

thank you in advance



hi Ben sassi mohammed,


can you share your validation xml code and action code then it will be more clear i think you have done both xml action level validation also check for duplication of fielderror tag and actionerror tag.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Struts 2 Fileupload problem