使用Struts框架后, Struts2框架不会处理multipart/form-data的请求,它需要调用其他的上传文件框架来解析二进制数据。但是Struts在原有的上传解析器基础上做了很多的封装,简化了文件上传。主要是在Struts核心包中的default.properties文件中的文件解析器,配置如下所示。

# struts.multipart.parser=cos
# struts.multipart.parser=pell
struts.multipart.parser=jakart

根据Struts框架的配置可知,在Struts中默认是使用jakart的Common-FileUpload的文件上传框架,因此要使用文件上传功能,还需要加入commons-io-*.jar 和commons-fileupload-*.jar文件到WEB-INF下的lib包中,然后Build path一下,就可以使用了。

上传文件只需要下列几部就可以成功上传文件。

1.jsp页面加入如下代码:

 <body> <s:form action="test!file.action" method="POST"
        enctype="multipart/form-data">
        <s:file name="file" label="file"></s:file>
        <s:submit value="submit" />
    </s:form>
</body>

2、编写文件上传action,在action中加入如下代码判断,并生成get和set方法

 private File file;//上传文件信息
    private String fileContentType;//上传文件类别
    private String fileFileName;//上传文件文件名

3、重命名文件名

在此处主要是使用了java中的UUID类生成字符串作为文件名,代码如下所示

String fileName = UUID.randomUUID().toString()+ fileFileName.substring(fileFileName.lastIndexOf("."),fileFileName.length());

4、获取文件上传路径

主要是使用了ServletActionContext中的方法,代码如下所示

String path = ServletActionContext.getServletContext().getRealPath("/upload/"+fileName);

5、最后一步使用java文件流将文件上传到指定的路径中,代码如下所示

FileInputStream fis;
    try {
     fis = new FileInputStream(file);
     FileOutputStream fos = new FileOutputStream(path);
     byte[] buffer = new byte[1024];
     int len = 0;
     while ((len = fis.read(buffer)) > 0) {
      fos.write(buffer, 0, len);
     }
  } catch (Exception e) {
     e.printStackTrace();
     System.out.println("error:" + e.getMessage());
  }

完成上面几部之后,文件就可以成功上传到指定的文件夹中。但是,这个上传还处在许多的问题,上传文件的大小没有限制,文件的格式没有限制,这些都会带来很大的问题的,在后面的章节中将逐步的解决类似的问题。

Struts2上传文件(1)的更多相关文章

  1. Unable to find ‘struts.multipart.saveDir’ Struts2上传文件错误的解决方法

    Unable to find ‘struts.multipart.saveDir’ Struts2上传文件错误的解决方法 在使用struts2的项目中上传文件的时候出现了一个这样的错误: 2011-7 ...

  2. [JavaWeb基础] 009.Struts2 上传文件

    在web开发中,我们经常遇到要把文件上传下载的功能,这篇文章旨在指导大家完成文件上传功能 1.首先我们需要一个上传文件的页面. <!--在进行文件上传时,表单提交方式一定要是post的方式, 因 ...

  3. 利用struts2上传文件时,如果文件名中含有-符号,那么会出错

    利用struts2上传文件时,如果文件名中含有-符号,那么会出错 报错如下: HTTP Status 500 - C:\Program Files\Apache Software Foundation ...

  4. struts2上传文件添加进度条

    给文件上传添加进度条,整了两天终于成功了. 想要添加一个上传的进度条,通过分析,应该是需要不断的去访问服务器,询问上传文件的大小.通过已上传文件的大小, 和上传文件的总长度来评估上传的进度. 实现监听 ...

  5. 关于Struts2上传文件的最大Size的设置

    今天使用Struts2的文件上传控件时,在struts.xml中,将处理上传的action中的fileUpload拦截器的maximumSize参数设置为5000000,上传了一个3M的文件后发现控制 ...

  6. 菜鸟学SSH(五)——Struts2上传文件

    上传文件在一个系统当中是一个很常用的功能,也是一个比较重要的功能.今天我们就一起来学习一下Struts2如何上传文件. 今天讲的上传文件的方式有三种: 1,以字节为单位传输文件: 2,Struts2封 ...

  7. 工作笔记4.struts2上传文件到server

    本文介绍两种:上传文件到server的方式   一种是提交Form表单:还有一种是ajaxfileupload异步上传. 一.JSP中:     1.提交Form表单 为了能完毕文件上传,我们应该将这 ...

  8. Struts2上传文件

    jsp: <form action="file_upload.action" method="post" enctype="multipart/ ...

  9. struts2上传文件类型列表

    '.a'      : 'application/octet-stream',         '.ai'     : 'application/postscript',         '.aif' ...

随机推荐

  1. iOS:实现图片的无限轮播

    为尊重原创,特注明原文链接:http://m.myexception.cn/operating-system/1949043.html 图片轮播及其无限循环效果 平时APP中的广告位或者滚动的新闻图片 ...

  2. 安装office2016 64位时提示64位与32位的office程序不兼容,在系统是64位的情况下,由于应用的需要,必须装64位的office,怎么办

    解决办法如下: 如果是,那就看看32位的能不能安装了,要是能,就重新安装一次,把所有组件全部安装,然后,在进行卸载,一般可以卸载成功 如果卸载不成功,这个时候再使用微软的专用卸载工具,——要认清,一定 ...

  3. javascript快速入门24--XML基础

    XML简介 XML代表Extensible Markup Language(eXtensible Markup Language的缩写,意为可扩展的标记语言).XML 被设计用来传输和存储数据.XML ...

  4. MoveSessionRestore.bat for firefox

    move "c:\Documents and Settings\leon\Application Data\Mozilla\Firefox\Profiles\eyr6cp34.default ...

  5. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-点动面板的每个按钮含义

    参考下面的图示     更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123   我的在线论坛: http://csrobot.g ...

  6. QQ和微信凶猛成长的背后:腾讯网络基础架构的这些年

    本文来自腾讯资深架构师杨志华的分享. 1.前言 也许没有多少人记得2004年发生的事情.但对于老腾讯来说,14年前的那个日子,2004年6月16日永远难以忘怀.这一天,QQ诞生5年后的腾讯在香港联交所 ...

  7. try....exception....finally

    class MyException(Exception): def __init__(self,msg): self.msg=msg def __str__(self): return self.ms ...

  8. [Android] android:visibility属性应用

    在Android开发中,有这样一种场景: 当edittext中有内容时候,旁边的提交或确定按钮显示: 当edittext中内容为空的时候,提交或确定按钮隐藏: 要实现起来其实并不困难.很多控件都有vi ...

  9. 【Python3 爬虫】08_正则表达式(元字符与语法)

    元字符表 符号 说明 示例 . 表示任意字符 'abc'  >>>'a.c'   >>>结果为:'abc' ^ 表示字符开头 'abc'  >>> ...

  10. javascript获取日期的年,月,日

    var date = new Date(strTime); return date.getFullYear()+"-"+(date.getMonth()+1)+"-&qu ...