2014-08-29 113 views
2

我是Struts2的新手,尝试使用fileUploader拦截器。我附上我的代码层Fileuploader拦截器Struts2

Action类(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 &lt;s:file&gt; 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> 

我不理解为什么我收到此错误

“内容类型不允许的:文件上传 “摄影-104a.jpg” “upload_37fbf440_169b_4687_af65_93c8c967256c_00000000.tmp” 图像/ pjpeg“

虽然我的上传文件格式是”.jpg“。请帮助我

+0

的*扩展名为*'.jpg',但是这不是MIME类型。 – 2014-09-02 12:52:43

回答

0

您收到此错误的原因可能是因为您不允许内容类型为image/pjpeg的文件。使用fileUpload拦截器的参数来定义允许的MIME类型

<interceptor-ref name="fileUpload"> 
    <param name="allowedTypes">image/jpeg,image/pjpeg</param> 
</interceptor-ref>