近日,應公司大師要求,完成了一個簡單的上傳功能,因爲框架是老版本的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();
}