近日,应公司大师要求,完成了一个简单的上传功能,因为框架是老版本的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();
}