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();
}




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