使用Struts2标签实现文件上传

原创 2014年03月19日 21:38:47

第一步:

    Jsp页面中:

       <%@taglib prefix="s" uri="/struts-tags" %>

   <tr>

          <td>图片</td>

          <tdclass="admin_righe_td"><s:filetheme="simple"name="myFile"></s:file></td>

       </tr>

       注意:

       theme=”simple”实现{图片}和上传文件部分不换行。

       此外,注意form中,

<formaction="news_add_admin.action" method="post"enctype="multipart/form-data" name="form1"id="form1">


第二步:  

     Action中:

publicclassNewsAction extends ActionSupport{

   private NewsServicenewsService = new NewsService();

   private IntegernewsId;

   private Newsnews;

  

   privatestatic final int BUFFER_SIZE = 1024 * 1024 * 5;

   // 实现文件上传

   private FilemyFile; // <s:file>标志不仅仅是绑定到myFile

   private StringcontentType; // 还有myFileContentType(上传文件的MIME类型)

   private StringfileName; // myFileFileName(上传文件的文件名,该文件名不包括文件的路径)

   private StringimageFileName;

  

   public File getMyFile() {

      returnmyFile;

   }

 

   publicvoid setMyFile(File myFile){

      this.myFile = myFile;

   }

 

   public String getMyFileContentType() {

      returncontentType;

   }

 

   publicvoid setMyFileContentType(StringcontentType) {

      this.contentType = contentType;

   }

 

   // 页面中使用myFileAction中也为myFile,注意getset名字中要有MyFile

   public StringgetMyFileFileName() {

      returnfileName;

   }

 

   publicvoidsetMyFileFileName(String fileName) {

      this.fileName = fileName;

   }

 

   public StringgetImageFileName() {

      returnimageFileName;

   }

 

   publicvoid setImageFileName(StringimageFileName) {

      this.imageFileName = imageFileName;

   }

  

   public NewsServicegetNewsService() {

      returnnewsService;

   }

 

   publicvoidsetNewsService(NewsService newsService) {

      this.newsService = newsService;

   }

  

   public Integer getNewsId() {

      returnnewsId;

   }

 

   publicvoid setNewsId(Integer newsId){

      this.newsId = newsId;

   }

 

   public News getNews() {

      returnnews;

   }

 

   publicvoid setNews(News news) {

      this.news = news;

   }

 

   private Stringurl;

  

   public String getUrl() {

      returnurl;

   }

 

   publicvoid setUrl(String url) {

      this.url = url;

   }

 

   public String newslist() {

      // Struts2获取request

      Maprequest = (Map) ActionContext.getContext().get("request");

      request.put("newsList",newsService.list());

//    ActionContext.getContext().put("newsList",newsService.list());

      returnSUCCESS;

   }

  

   public String add() {

      imageFileName =new Date().getTime() + getExtention(fileName);// 上传后,新文件名

      Stringpath = ServletActionContext.getServletContext().getRealPath("/images")+

            "/" + imageFileName;

      FileimageFile = newFile(path);

      copy(myFile, imageFile);

      news.setNewsImage("/images"+"/"+ imageFileName);

      newsService.add(news);

      //url

      //ActionContext.getContext().put("url","news_newslist_admin.action");

      this.setUrl("news_newslist_admin.action");

      return"redirect";

   }

  

   public String newsadd() {

      returnSUCCESS;

   }

  

   privatestatic void copy(File src, Filedest) {

      try {

         InputStreamin = null;

         OutputStreamout = null;

         try {

            in= newBufferedInputStream(new FileInputStream(src),BUFFER_SIZE);

            out= newBufferedOutputStream(new FileOutputStream(dest),BUFFER_SIZE);

            byte[] buffer =new byte[BUFFER_SIZE];

            while (in.read(buffer) >0) {

                out.write(buffer);

            }

         }finally{

            if (null != in) {

                in.close();

            }

            if (null != out) {

                out.close();

            }

         }

      }catch (Exception e) {

         e.printStackTrace();

      }

   }

  

   privatestatic StringgetExtention(String fileName) {

      int pos =fileName.lastIndexOf(".");

      returnfileName.substring(pos);

   }

}

然后在struts.xml文件中进行配置。

小细节:

    若在配置文件中使用${url},则需要在相应的Action中,添加url的get和set方法,否则取不到url的值。${ url }在struts.xml中并不是el表达式,只是一种取值方式。

相关文章推荐

ssh2(struts2+spring2.5+hibernate3.3+ajax)带进度条文件上传(封装成标签)

http://yale.iteye.com/blog/464132 ssh2中文件带进度条的上传的demo有很多,但是大多数都是集成了上传的插件来实现的,如:swfupload,dw...

笨鸟先飞之Java(一)--使用struts2框架实现文件上传

不管是.net还是Java,我们最常接触到的就是文件的上传和下载功能,在Java里要实现这两个常用功能会有很多种解决方式,但是struts2的框架却能给我们一个比较简单的方式,下面就一起来看吧:...
  • YSC1123
  • YSC1123
  • 2015年07月21日 20:22
  • 1639

使用struts2如何实现文件上传

文件上传页面中,包含两个表单域,文件标题和文件浏览域——当然,为了能完成文件上传,我们应该将这两个表单域所在表单的enctype属性设置为multipart/form-data。该页面的代码如下所示:...

使用struts2和AJAX实现文件上传并显示进度条

这个是刚进入公司,技术总监叫我做的东西,开始的确没有什么头绪,以前做的项目里只做过上传,下载。而且也只是方法调用。这个方法涉及到对common.fileupload.jar里一个方法的重写,并且要实现...
  • ljcjeff
  • ljcjeff
  • 2013年12月12日 22:49
  • 1695

使用Struts2实现简单的文件上传和下载

文件上传和下载 上传 上传成功 文件下载 导入相应的jar包 搭建struts2环境  编写上传jsp页面 Insert title here...

使用Struts2和Tomcat实现文件上传到Hadoop

使用Struts2和Tomcat实现文件上传到Hadoop 本文档所采用的版本: ü Struts版本2.3.14 (对struts2的版本无严格要求,均可) ü Hadoop版本1.0.4 (...
  • bikun
  • bikun
  • 2014年11月03日 16:16
  • 672

使用Uploadify插件在struts2中实现多文件上传示例

使用到的版本为:struts2.1 + uploadify3.2 + swfobject2.2 package com.ssh.web.controller; import java.io.Fi...

struts2实现多文件上传和下载

  • 2015年04月23日 13:57
  • 14.44MB
  • 下载

Struts学习总结(五)---使用Struts2实现单个文件上传

使用Struts2实现单个文件的上传
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Struts2标签实现文件上传
举报原因:
原因补充:

(最多只允许输入30个字)