<s:file>:
The <s:file> tag is used to create a HTML file upload component to browse and select a file from your machine and upload it to the server.
Syntax:
<s:file name="fileName" label="fieldLabel"/>
Note: The FileUploadInterceptor is responsible for the whole functionality of s:file. It intercepts the user request with “multipart/form-data” enctype and automatically saves the selected file into the temp directory of the server. Uploaded file details like name and content type are auto injected by FileUploadInterceptor using set”XXX”FileName() and set”XXX”ContentType() methods. Set enctype of the form to “multipart/form-data”. It also provides the functionality to set the maximum size, filt type etc.
Example:
test.jsp
<%@ taglib uri="/struts-tags" prefix="s"%> <html> <head> <title>Struts 2 s:file UI tags example</title> </head> <body> <h3>This is a s:file UI tags example.</h3> <s:form action="Test" enctype="multipart/form-data" method="POST"> <s:file name="selectedDoc" label="Select file" /> <s:submit value="Submit" align="center"/> </s:form> </body> </html> |
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng. filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>test.jsp</welcome-file> </welcome-file-list> </web-app> |
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="default" extends="struts-default"> <action name="Test" class="com.w3schools.action.Test"> <interceptor-ref name="defaultStack"> <param name="allowedTypes">text/plain,image/jpeg</param> </interceptor-ref> <result name="success">/welcome.jsp</result> </action> </package> </struts> |
Test.java
import java.io.File; import com.opensymphony.xwork2.ActionSupport; /** * This class is used as an action class. * @author w3schools */ public class Test extends ActionSupport{ //data members private File selectedDoc; private String selectedDocContentType; private String selectedDocFileName; //business logic public String execute(){ return SUCCESS; } //getter setters public File getSelectedDoc() { return selectedDoc; } public void setSelectedDoc(File selectedDoc) { this.selectedDoc = selectedDoc; } public String getSelectedDocContentType() { return selectedDocContentType; } public void setSelectedDocContentType(String selectedDocContentType) { this.selectedDocContentType = selectedDocContentType; } public String getSelectedDocFileName() { return selectedDocFileName; } public void setSelectedDocFileName(String selectedDocFileName) { this.selectedDocFileName = selectedDocFileName; } } |
welcome.jsp
<%@ taglib uri="/struts-tags" prefix="s"%> <html> <head> <title>Struts 2 s:file UI tags example</title> </head> <body> <h3>This is a s:file UI tags example.</h3> File Name: <s:property value="selectedDocFileName" /><br/> File Content Type: <s:property value="selectedDocContentType"/> <br/> File: <s:property value="selectedDoc" /> </body> </html> |
Output:
Select file.
Click on Submit button.
Download this example.
Next Topic: Struts 2 s:doubleselect UI tag with example.
Previous Topic: Struts 2 s:combobox UI tag with example.