I am new to Struts 2 and trying to do use fileUpload
interceptor. I am attaching all my code layers
Action Class (FileUploadAction
):
package com.caveofprogramming.actions; import java.io.File; import org.apache.struts2.convention.annotation.InterceptorRef; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Result; import com.opensymphony.xwork2.ActionSupport; public class FileUploadAction extends ActionSupport{ private File fileUpload; private String fileUploadContentType; private String fileUploadFileName; public String getFileUploadContentType() { return fileUploadContentType; } public void setFileUploadContentType(String fileUploadContentType) { this.fileUploadContentType = fileUploadContentType; } public String getFileUploadFileName() { return fileUploadFileName; } public void setFileUploadFileName(String fileUploadFileName) { this.fileUploadFileName = fileUploadFileName; } public File getFileUpload() { return fileUpload; } public void setFileUpload(File fileUpload) { this.fileUpload = fileUpload; } @Action( value = "/fileUpload", results={@Result(name="success",location="/success.jsp"), @Result(name="error",location="/error.jsp"), @Result(name="input",location="/error.jsp") }, interceptorRefs={ @InterceptorRef( params={"allowedTypes","image/jpeg,image/jpg,application/zip", "maximumSize","1024000"}, value="fileUpload" ), @InterceptorRef("defaultStack"), @InterceptorRef("validation") } ) public String execute(){ try{ return SUCCESS; } catch(Exception e){ return ERROR; } } public String display() { return NONE; } }
error.jsp
:
<%@ taglib prefix="s" uri="/struts-tags" %> <html> <body> <s:fielderror/> </body> </html>
Success.jsp
:
<%@ 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 prefix="s" uri="/struts-tags" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> Success </body> </html>
fileUpload.jsp
:
<%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <s:head /> </head> <body> <h1>Struts 2 <s:file> file upload example</h1> <s:form method="post" enctype="multipart/form-data" action="fileUpload"> <s:file label="File One" name="fileUpload" /> <s:submit /> </s:form> </body> </html>
I am not understanding why I am getting this error
"Content-Type not allowed: fileUpload "photography-104a.jpg" "upload_37fbf440_169b_4687_af65_93c8c967256c_00000000.tmp" image/pjpeg"
Although my uploading file format is .jpg
.
Advertisement
Answer
You are getting this error probably because you don’t allow files with content type image/pjpeg
. Use parameter of fileUpload
interceptor to define allowed MIME types
<interceptor-ref name="fileUpload"> <param name="allowedTypes">image/jpeg,image/pjpeg</param> </interceptor-ref>