struts2 ajax文件上传类型拦截后的消息提示

1.html 文件上传表单

<form action="" enctype="multipart/form-data" method="post"
                            class="stdform stdform2" id="upload-form">
    <input type="file" name="upload" id="uplodfile" />
    <button id="file-submit" class="submit radius2" style=" 100px; font-size: 15px">提 交</button>

2. js 异步提交

function __submit(){
        $('#upload-form').submit(function(e){
        //前端验证
        /*
var file = $("#uplodfile").val(); var pos=file.lastIndexOf("\"); var filename=file.substring(pos+1); var type=(filename.substr(filename.lastIndexOf("."))).toLowerCase(); var allowedTypes=['.pdf','.jpg','.png']; if(allowedTypes.indexOf(type)==-1){ layer.alert('不允许的文件类型!',{icon: 5 ,offset:['40%', '40%']}); return false; }
        */ $(
this).ajaxSubmit({ url: 'rcm_upload.action', dataType: 'json', type:'post', success: function(data){ alert(data.msg)
} });
return false; }); }

3.strtus2文件上传拦截配置 struts.xml

<action name="file_*" class="com.demo.action.FileManager.Action" method="{1}">
             <result name="success" type="json">
                <param name="root">data</param>
                <param name="contentType">text/plain</param>
                <param name="excludeNullProperties">true</param>
            </result>
            <param name="savePath">/download</param>
              <interceptor-ref name="fileUpload">  
           <!--配置允许上传的文件类型-->  
            <param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg</param>  
          </interceptor-ref>  
          <interceptor-ref name="defaultStack"/>
         <!--配置文件拦截后的input action跳转-->  
          <result name="input" type="chain">file_input</result>  
        </action>

4.action

@SuppressWarnings("static-access")
public class UploadAction extends ActionSupport {

    private File uploadImage; //得到上传的文件
    private String uploadImageContentType; //得到文件的类型
    private String uploadImageFileName; //得到文件的名称
    
    public String execute(){
        System.out.println("fileName:"+this.getUploadImageFileName());
        System.out.println("contentType:"+this.getUploadImageContentType());
        System.out.println("File:"+this.getUploadImage());
        
        //获取要保存文件夹的物理路径(绝对路径)
        String realPath=ServletActionContext.getServletContext().getRealPath("/upload");
        File file = new File(realPath);
        
        //测试此抽象路径名表示的文件或目录是否存在。若不存在,创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
        if(!file.exists())file.mkdirs();
        
        try {
            //保存文件
            FileUtils.copyFile(uploadImage, new File(file,uploadImageFileName));
       setMessage(MessageType.Ok, "文件上传成功!"); //返回消息处理。。 } catch (IOException e) { e.printStackTrace(); } return SUCCESS; }
  public String input()
  {
   setMessage(MessageType.Erro, "不允许的文件类型!"); //返回消息处理

return SUCCESS;
  }
public File getUploadImage() { return uploadImage; } public void setUploadImage(File uploadImage) { this.uploadImage = uploadImage; } public String getUploadImageContentType() { return uploadImageContentType; } public void setUploadImageContentType(String uploadImageContentType) { this.uploadImageContentType = uploadImageContentType; } public String getUploadImageFileName() { return uploadImageFileName; } public void setUploadImageFileName(String uploadImageFileName) { this.uploadImageFileName = uploadImageFileName; } }

注意 :struts 文件拦截成功后自动直接返回 “input” ,我们要对返回的result name=“input” 进行配置

我们这里只进行拦截成功的提示:配置内部action跳转即可

 <!--配置文件拦截后的input action跳转-->  
          <result name="input" type="chain">rcm_input</result>  
原文地址:https://www.cnblogs.com/L-zh/p/8580122.html