`

struts2.0 上传下载

阅读更多

struts2.0 上传流程

  一,

   1,  jsp 页面 form   method="post"  enctype="multipart/form-data"    <s:file name="file"></s:file>

   2,strut-xx.xml   正常配置

   3,web.xml  中加入

       <filter>
         <filter-name>struts-cleanup</filter-name>
          <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
        </filter>

   4,xx.action  中 private  File file ;

                          private String fileContentType; 

                          private String fileFileName;

 

public String createWxyfb() throws Exception {
  wxyfb.setId(this.wxypzService.getCounter());
  UserInfo uf = (UserInfo) this.getHttpSession().getAttribute("userInfo");
  wxyfb.setCjr(uf.getYhbh());
  wxyfb.setCjsj(new Date());
  wxyfb.setXgr(uf.getYhbh());
  wxyfb.setXgsj(new Date());
  if(yatp != null && yatp.isFile()){//判断是否上传文件
    LogUtils.info(">>>>>>>>>>>>>>开始上传........");  
          String newFileName = null;
       // 得到当前时间自1970年1月1日0时0分0秒开始走过的毫秒数
       long now = System.currentTimeMillis();      
       zswjPath=ServletActionContext.getServletContext().getRealPath("/")+Constant.JZYA_FILE_PATH;
       File dir = new File(zswjPath);
       // 如果该目录不存在,就创建
       if (!dir.exists()) {
          dir.mkdirs();
       }
       // 为避免重名文件覆盖,判断上传文件是否有扩展名,以时间戳作为新的文件名
       int index = yatpFileName.lastIndexOf(".");
       if (index != -1) {
        newFileName = "realFileName" + now + yatpFileName.substring(index);
        this.setRealName(newFileName);
       }else{
           newFileName = Long.toString(now);
       }      
       wxyfb.setTplj(zswjPath+"\\"+newFileName); //当前图片的路径
       // 读取保存在临时目录下的上传文件,写入到新的文件中
       InputStream is = new FileInputStream(yatp);
       OutputStream os = new FileOutputStream(new File(dir, newFileName));
       try{
        byte[] buf = new byte[1024*1024*2];
        int len = -1;
        while ((len = is.read(buf)) != -1) {
         os.write(buf, 0, len);
        }
        LogUtils.info(">>>>>>>>>>>>>>上传结束........"); 
       }catch (Exception e) {
    super.handleMessage(ActionMessages.ADD_FAILED);
       }finally{
        is.close();
        os.close();
       }
  }  
   this.wxypzService.saveWxyfb(wxyfb);
   super.handleMessage(ActionMessages.ADD_OK);
  return "success";
 } 

  二,常见错误

    1, 如果上传页面时model窗体的话 则上传完之后 不能将窗口立即关闭

 

 

struts2.0 下载

      struts.xml    

     <!-- 下载文件 -->
  <action name="downloadWxyfb" class="Action" [method="downloadWxyfb"]>//说明[]内可填、可不填,填写的话应在类中添加相应的方法。
   <result name="success" type="stream">
    <!-- 指定下载文件的类型 -->
    <param name="contentType">application/octet-stream;charset=ISO8859-1</param>
    <!-- 指定文件下载时缓冲区的大小 -->
    <param name="bufferSize">4096</param>
    <!-- 指定文件下载时缓冲区的大小 attachment:以弹出框的形式打开,inline:直接在浏览器中打开(默认)-->
    <param name="contentDisposition">attachment;filename=${realName}</param>
    <!-- 指定被下载文件的入口输入流 -->
    <param name="inputName">inputStream</param>

  </result>

 

   struts.action 

     private String realName;

     private InputStream inputStream; //流的入口

   

    

public InputStream getInputStream() {
		try{
			String path= this.getHttpServletRequest().getParameter("path");
		    int begin=path.lastIndexOf("\\");
		    String wjm=path.substring(begin+1);
//这一行的功能是实现下载的是否如果文件名是中文的情况下的乱码问题。
//另外一点如果是页面 xx.do?fileName=张.jpg这种情况的话,确保到后台得到//得到代码不是乱码应该设置tomcat的connector(级8080那里)添加	 //useBodyEncodingForURI="true" URIEncoding="UTF-8"		
this.realName = new String(wjm.getBytes(),"iso-8859-1");
                          //第一种能用绝对路径,getResourceAsStream()只能是相对路径,具体用法可以查看相关信息
		inputStream = ServletActionContext.getServletContext().getResourceAsStream(Constant.JZYA_DOWN_PATH+this.realName);
                            //第二种 绝对路径 
                      inputStream = new FileInputStream(new File(Constant.JZYA_DOWN_PATH+this.realName));
		}catch(Exception e){
			e.printStackTrace();
		}
		return inputStream;
	}

 

  

      

Struts2使用开源项目Apache Jakarta Commons FileUpload和内建的FileUploadInterceptor拦截器实现文件上传,所需的jar包如下:

commons-logging-1.1.jar
freemarker-2.3.8.jar
ognl-2.6.11.jar
struts2-core-2.0.6.jar
xwork-2.0.1.jar
commons-io-1.3.1.jar
commons-fileupload-1.2.jar


 

分享到:
评论

相关推荐

    struts2.0中文教程

    01 为Struts 2.0做好准备 02 常用的Struts 2.0的标志(Tag) 03 Struts 2.0的Action讲解...09 在Struts 2中实现文件上传 10 在Struts 2中实现CRUD 11 Struts 2中的OGNL 12 trus 2的新表单标志的使用 13 Struts 2与AJAX

    Struts 2.0系列(MAX)

    Struts 2.0系列(MAX),pdf格式,全方位介绍struts2: 常用的Struts 2.0的标志(Tag)介绍 ...在Struts 2中实现文件上传 在Struts 2中实现CRUD Struts 2中的OGNL Strus 2的新表单标志的使用 Struts 2与AJAX

    struts2.0上传下载实例

    本实例重点讲解Struts2.0中的文件上传和下载功能,这对于任何处理用户数据交互的Web应用都是必不可少的特性。 在Struts2中,文件上传是通过`struts2-core.jar`、`commons-fileupload.jar`和`commons-io.jar`等库来...

    初识[Struts2.0]并[使用Struts2.0]进行SSH集成

    5. **插件架构**:Struts2.0具有丰富的插件支持,如文件上传、日期时间选择等,这些插件可以轻松地扩展框架功能。 SSH集成步骤: 1. **Spring**:Spring提供依赖注入(DI)和面向切面编程(AOP),负责管理和协调...

    Struts_2.0从入门到精通

    这一步骤至关重要,它包括从Apache官方网站下载Struts2.0包,以及在Eclipse等IDE中创建新的Web项目。通过将Struts2.0的库文件添加到项目中,确保所有的依赖都正确无误,以便后续的编码和调试工作能够顺利进行。 二...

    struts2.0源代码

    这个源代码包包含了Struts2.0的核心功能以及实现上传与下载功能和数据库操作的示例。 Struts2的核心概念之一是模型-视图-控制器(MVC)架构,它将业务逻辑、数据和用户界面分离开来,使得开发者可以独立地处理各个...

    struts2.0教程合集

    包含了Struts2.0的进阶主题,如动态方法调用(Dynamic Method Invocation,DMI)、OGNL(Object-Graph Navigation Language)表达式语言的使用、异常处理机制、国际化(Internationalization, i18n)支持以及文件上传...

    struts2.0所有的JAR包

    这个上传的压缩包包含了Struts2.0运行所需的全部JAR文件,这些文件是开发基于Struts2.0的应用程序所必需的。 在Java开发中,JAR(Java Archive)文件是一种归档格式,用于收集多个类文件和其他资源,以便在Java...

    Struts2.0中文教程权威版

    09 在Struts 2中实现文件上传 10 在Struts 2中实现CRUD 11 Struts 2中的OGNL 12 trus 2的新表单标志的使用 13 Struts 2与AJAX Struts2中用Spring实现IoC.doc Struts2中的零配置与CoC(Convention over Configration...

    Struts2.0框架书籍

    开发事例教程部分,可能会包括创建简单的登录注册模块、文件上传下载功能、表单验证、国际化处理、异常处理等常见Web应用需求的实现。这些实例将帮助读者将理论知识转化为实际操作技能,提升解决实际问题的能力。 ...

    struts2.0+spring2.5+hibernate3.0整合框架,下载导入到eclipse下即可

    struts2.0+spring2.5+hibernate3.0整合框架,下载导入到eclipse下即可。。启动tomcat前先修改jdbc.properties文件。由于lib文件较大,所以请自行导入相关lib包。

    手把手教你Struts2.0

    Struts2.0 是一个基于 Model-View-Controller (MVC) 设计模式的Java Web框架,它旨在简化Web应用的开发。Struts 2.0是在Struts 1.x的基础上进行了改进,以解决原有版本的一些局限性,如代码量过多、单元测试困难等...

    学习Struts 2.0系列

    11. **文件上传和下载**:实现在Struts 2.0中处理文件上传和下载,包括文件大小限制、文件类型的检查等。 12. **插件和最佳实践**:介绍Struts 2.0的一些实用插件,如Tiles插件,以及开发中的最佳实践和注意事项。 ...

    Struts 2.0中文帮助手册.chm

    4. **丰富的插件支持**:Struts 2.0拥有众多插件,可以扩展框架的功能,如Ajax支持、文件上传下载、PDF生成等。 5. **模板技术**:Struts 2.0支持FreeMarker和Velocity等多种模板技术,方便开发者选择最适合的视图...

    struts 2.0 核心jar包

    Struts 2.0 是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,由Apache软件基金会开发。它旨在提供一个结构化的、可扩展的平台,帮助开发者构建更高效、易于维护的Web应用。核心jar包是...

    struts2.0上传文件源码

    这个“struts2.0上传文件源码”提供了一个完整的示例,展示了如何在Struts2.0环境中实现文件上传功能。在Web应用中,文件上传是常见的需求,例如用户可能需要上传头像、文档或者其他类型的数据。 在Struts2.0中,...

    Struts2.0+Spring2.0+Hibernate3.1登录及增删改查的完整演示示例

    应广大网友需求,自己抽了点时间写了一个Struts2.0+Spring2.0+Hibernate3.1的登录及增删改查的完整演示示例,以此奉献给大家,由于本人水平有限,有写的不好的地方还望大家多提宝贵意见,如果有不明白的地方请关注我的...

    最新struts2.0教程

    2. **上传和下载(Uploading and Downloading)**:Struts2.0提供了方便的文件上传和下载支持。通过简单的配置和Action方法,可以轻松处理大文件上传和下载,同时支持多文件上传。 3. **CRUD操作(Create, Read, ...

Global site tag (gtag.js) - Google Analytics