`

struts2实现简单文件上传

阅读更多

1、jsp页面:

<body>
   ${msg }
    <form action="${pageContext.request.contextPath}/fileupload/fileupload.action" enctype="multipart/form-data" method="post">
     文件:<input type="file" name="file"><input type="submit" value="上传">
    </form>
  </body>

 

一定要设置enctype为"multipart/form-data"。

 

2、struts配置:

<package name="fileupload" namespace="/fileupload" extends="struts-default">
  <action name="fileupload" class="cn.itcast.action.FileUploadAction">
   <result name="success">/upload.jsp</result>
  </action>
 </package>

 

记得要继承struts-default

 

3、action

import java.io.File;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;

public class FileUploadAction {
 private File file; //与页面中定义的名字一样
 private String fileFileName; //表示上传的文件名,格式为XXXFileName
 public File getFile() {
  return file;
 }
 public void setFile(File file) {
  this.file = file;
 }
 public String getFileFileName() {
  return fileFileName;
 }
 public void setFileFileName(String fileFileName) {
  this.fileFileName = fileFileName;
 }
 public String execute() throws Exception{
  String realPath = ServletActionContext.getServletContext().getRealPath("/upload"); //获取觉得路径
  System.out.println(realPath);
  if(file != null){
   File saveFile = new File(realPath, fileFileName);
   if(!saveFile.getParentFile().exists()){
    saveFile.getParentFile().mkdirs(); //创建文件夹
   }
   //用commons-io的jar包
   FileUtils.copyFile(file, saveFile);
   ActionContext.getContext().put("msg", "上传成功");
  }
  
  return "success";
 }
}

 

4、struts2默认最大只能上传2M的文件,如上传文件超过此限制则会报错:

警告: Request exceeded size limit!
org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (66671724) exceeds the configured maximum (10701096)
 at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:965)
 at org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:310)
 at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:334)
 at org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.parseRequest(JakartaMultiPartRequest.java:189)
 at org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.processUpload(JakartaMultiPartRequest.java:127)
 at org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.parse(JakartaMultiPartRequest.java:92)
 at org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper.<init>(MultiPartRequestWrapper.java:81)
 at org.apache.struts2.dispatcher.Dispatcher.wrapRequest(Dispatcher.java:803)
 at org.apache.struts2.dispatcher.ng.PrepareOperations.wrapRequest(PrepareOperations.java:134)
 at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

 

可惜修改常量配置最大上传限制:

在strust.xml中配置, <constant name="struts.multipart.maxSize" value="10701096"/>

分享到:
评论

相关推荐

    struts2实现多文件上传下载

    网上的Struts2进行的文件下载一般都是单文件或者固定的文件,并没有(很少)实现随意文件的下载的例子 提供多文件上传,上传成功后,提供刚上传的文件下载功能(其他的都可以在其上面进行扩充) 多文件 上传 下载...

    struts2 简单的文件上传

    My eclipse 实现简单Struts2文件上传,代码仅供参考!

    struts2实现简单的文件上传

    里面有实现struts2简单文件上传的java文件、xml文件、和jsp文件,还有用struts2需要导入的包,xml文件直接把里面的内容复制过去就得了,因为版本不同,可能有错,所有xml的头信息不要复制。

    struts2+jquery+ajax文件异步上传

    struts2+jquery+ajax实现了文件的异步上传,的MyEclipse编写的简单项目

    用struts1实现文件的上传和下载

    用struts1实现文件的上传和下载,在本机已测试成功,一个简单的实现文件上传和下载的功能

    struts2+ajax实现批量上传文件(简单实现,自己加工)

    struts2 ajax 实现 批量上传文件(按ctr键 多选,并非多个文件选择输入框的),jar包太大删掉了 仅用了struts2 的jar包 加进去即可

    Struts2+Hibernate实现文件上传

    使用Struts2和Hibernate实现简单的图片上传 上传到tomcat服务器

    利用struts2实现上传文件进度条

    超级简单. 一看就懂. 包您满意. 利用struts2和json实现上传文件实时监控. 只要将项目中struts2与json的jar包加上就可以使用

    Struts2实现文件上传

    Struts2 文件上传 内有注释。配置最简单化。一看就明白。有JAR包

    struts2+ajax文件进度条的实现

    文件上传进度条的简单实现,如果有不当的地方还望批评指出,谢谢!

    JAVA COS上传实例支持Struts2

    COS这个文件上传组件可以说在几个开源的上传文件组件中性能是非常优秀的,上传速度很快(相比fileUpload,smart等组件),但在使用Struts2结合COS文件上传时要注意Struts2实现了自己的MultiPartRequest,这个过滤后的...

    Struts2 实现文件简单上传

    NULL 博文链接:https://960432397.iteye.com/blog/2028802

    利用STRUTS2实现上传

    利用struts2实现文件上传,这里面有批量上传,和单一文件上传,功能实现很简单,但是必须先下载STRUTS2的jar包,以及在前台传入数据时候注意我的form表单,用sturts2上传必须改变form表单

    Struts2使用FlashFileUpload.swf实现批量文件上传

    以前做.net时,用过一个FlashFileUpload.swf批量文件上传工具,很帅很简单。 网址:http://www.codeproject.com/KB/aspnet/FlashUpload.aspx 因为这个用Flex写的客户端插件公开源码,而且实现的的相当完美,在asp...

    java中struts2实现简单的文件上传与下载

    主要为大家详细介绍了java中struts2实现简单的文件上传与下载的相关资料,感兴趣的小伙伴们可以参考一下

    Struts2下多文件的上传与下载

    在网络上,对于Java处理文件上传和下载的技术比较多,而Struts作为一款优秀的框架也提供了非常方便的文件上传和下载,而网上的一些例程都非常的不全面,概括来: 1) 文件上传比较多,多文件上传少一点 2) 文件下载很...

    struts2文件上传下载(jsp)

    (注意:每一次重新部署项目到服务器,原来上传的文件都会被清空,所以最好将文件上传到数据库中,我这里为了实现简单的上传demo,是直接上传到tomcat服务器上的) 代码是韩娜老师的,感谢老师分享。(我的代码太杂...

    struts2文件上传以及下载

    struts2文件上传以及下载 用最简单的代码来实现struts2的文件上传下载机制

    ajax_struts2_上传与下载_无刷新

    4. 针对商品实现简单无刷新上传与下载 4. 批量导入数据采用的是导入test文件夹下的测试压缩包upload.rar上传到服务器的临时目录,然后利用WinRar.exe对其进行解压,解压后对指定文件名的Excel文件进行解析,然后对每...

Global site tag (gtag.js) - Google Analytics