使用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表达式,只是一种取值方式。

Struts2上传文件及相关总结

Struts2通过第三方上传组件来实现文件上传
  • WenGu__ZhiXin
  • WenGu__ZhiXin
  • 2016年07月27日 17:26
  • 420

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

使用Struts2实现单个文件的上传
  • wu631464569
  • wu631464569
  • 2016年08月31日 14:57
  • 337

在struts2中用fileupload实现文件上传

实现原理 Struts 2是通过Commons FileUpload文件上传。Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦...
  • wugouzi
  • wugouzi
  • 2013年09月09日 17:49
  • 6001

struts2.x多文件上传(使用注解)

struts2.x多文件上传(使用注解)   一般网站都会提供文件的上传与下载的功能,尤其是资料管理型网站。刚好在工作中需要用到,就提前学习了一下,并建了一个maven工程做练习。   1. ...
  • wendingzhulu
  • wendingzhulu
  • 2014年07月17日 19:35
  • 1743

struts2完美实现文件上传和下载

## struts2完美实现文件上传和下载 ##
  • zjl16
  • zjl16
  • 2016年01月14日 11:59
  • 3329

使用struts2标签上传用户头像(一)

这些天用到在SSH框架下上传用户照片,原来以为挺复杂的事情,结果使用struts2默认的文件上传组件很轻松地就完成了。这是基础的代码,随后会在此基础上改进。 1.基础准备 使用struts2默认的文件...
  • adalu1986
  • adalu1986
  • 2015年03月27日 14:47
  • 1585

ajaxFileUpload 异步上传文件配合Struts2的简单使用

我在用SSH框架写一个简单的企业网站的时候需要对产品的图片进行异步上传,经过研究成功实现了ajaxFileUpload+Struts2的异步上传功能,所以抽空做下总结,本文主要讲解ajaxFileUp...
  • cckevincyh
  • cckevincyh
  • 2017年04月16日 21:43
  • 1193

【Struts2框架】第八节上传-利用struts2实现上传功能

Struts2的文件上传 将表单的method属性设置为post,将enctype设置为multipart/form-data。 将enctype设置为multippart/form-data,浏览...
  • u013517797
  • u013517797
  • 2015年08月03日 09:34
  • 1336

Struts2+poi实现Excel文件上传并插入数据库的操作

Struts.xml部分
  • h670816026
  • h670816026
  • 2017年07月05日 21:31
  • 921

struts2框架-------文件上传机制

上传文件是很多Web程序都具有的功能 Struts2 是通过org.apache.commons.fileupload.FileUpload类实现文件上传。FileUpload 通过将HTTP 的数据...
  • u012176984
  • u012176984
  • 2015年02月18日 00:30
  • 700
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Struts2标签实现文件上传
举报原因:
原因补充:

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