Struts2注解实现文件上传,下载

      近日,应公司大师要求,完成了一个简单的上传功能,因为框架是老版本的Struts2,而小编的工作经验也是非常的少,以前写过spring mvc的文件上传,经过小编的努力后文件的上传功能还是实现了,下面看具体的实现步骤。

第一步,声明一个FileUpLoadAction,继承ActionSupport。

    public class FileUploadAction extends  ActionSupport {

            private File myFile;

            private String myFileName; //文件名称

            private String myFileContentType; //文件类型

            public String execute(){}

    }

第二部,完成execute方法。

public String execute(){
		
	String path = ServletActionContext.getServletContext().getRealPath("/upload");
		
	// 声明文件目录upload,如果文件名不存在就创建
        File file = new File(path);
        
        if(!file.exists()){
            file.mkdirs();
        }
        
	SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
	String str = format.format(new Date()); 
	String sname = str.replaceAll("[\\s:-]", "");
        //因为小编这里只需要pdf格式的文件
        File uploadFile = new File(file, sname+".pdf");
	try {
	    FileUtils.copyFile(myPdf, uploadFile);
	    DocBean docBean = new DocBean();
    	    docBean.setProid(proid);
	    String[] n = myPdfFileName.split("\\.");
	    docBean.setDocName(n[0]);
	    String[] s = path.split("serverinfo");
	    docBean.setFilePath(s[1]+"\\"+sname+".pdf");
            //数据库存入相应的信息
	    docService.addDocBean(docBean);
	} catch (IOException e) {
		e.printStackTrace();
		logger.error("上传文件出错!");
	} catch (Exception e) {
		e.printStackTrace();
		logger.equals("文件信息保存失败!");
	}
	    return "success";
	}

第三部,实现一个upload.jsp页面,写一个file控件。

 <form class="form-horizontal"  id="formid" method="post" enctype="multipart/form-data"   >

    <input type="file" id='myFile' name='myFile'  accept=".pdf">//限定为pdf类型的

</form>

接下来就是最重要的一步,注解我们要访问的action 还有 struts.xml的相应配置

@Namespace("/UploadAction")
@Scope("prototype")
@InterceptorRefs(value = { @InterceptorRef("fileUploadStack") })  
public class FileUploadAction extends  ActionSupport {
        @Action(value="toUploadPdf",results={@Result(name="success",location="/jsp/uploadSuccess.jsp")})
	public String execute(){}
}
<constant name="struts.enable.DynamicMethodInvocation" value="true" />  
<constant name="struts.devMode" value="true" />  //开发者模式打开 上线时 必须改为false
<constant name="struts.convention.package.locators" value="action" />  
<!-- 指定允许上传的文件最大字节数,默认值是2M,使用struts常量扩大默认上传文件大小 -->  
<constant name="struts.multipart.maxSize" value="104857600"></constant>  

接下面写一个js提交form表单即可。

 function toSave(){
	$("#formid").attr("action","<%=path%>/UploadAction/toUploadPdf.action");
	$("#formid").submit();
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章