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

Struts2 同时被 2 个专栏收录
1 篇文章 0 订阅
6 篇文章 0 订阅

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




  • 1
    点赞
  • 0
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页

打赏作者

Shen_sy

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值