博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2学习笔记--上传单个和批量文件示例
阅读量:6803 次
发布时间:2019-06-26

本文共 4767 字,大约阅读时间需要 15 分钟。

    struts2提供了对上传文件的支持,将上传后的文件封装为java.io.File对象,开发者只需要在Action中定义一个File类型的变量,然后直接使用该变量,将它复制到目的目录即可.

  • 单个文件上传实例

  `  下面是一个单个文件上传的小例子,webRoot下新建一个upLoad.jsp,核心代码为:

      
文件:

  action包下新建一个名为UpLoadAction的java类:

1 package com.wang.action; 2  3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 import java.io.InputStream; 9 import java.io.OutputStream;10 11 import javax.servlet.http.HttpServletRequest;12 13 import org.apache.struts2.ServletActionContext;14 15 import com.opensymphony.xwork2.ActionSupport;16 17 public class UpLoadAction extends ActionSupport{18 19     //上传的文件,struts2会把文件封装为File对象20     private File picture;21     //文件名,struts2会把文件名称设置到该变量22     private String pictureFileName;23     //文件类型,struts2会把文件类型设置到该变量24     private String pictureContentType;25     26     public String upLoad() throws IOException{27         //获取request,进而获取文件的路径28         HttpServletRequest request=ServletActionContext.getRequest();29         String path=request.getRealPath("/aaa");30         //最终将文件保存到/upload下31         File saved=new File(path,pictureFileName);32         InputStream is=new FileInputStream(picture);33         OutputStream os=new FileOutputStream(saved);34         byte[] b=new byte[1024];35         int len=0;36         while((len=is.read(b))!=-1){37             os.write(b, 0, len);38         }39         40         is.close();41         os.close();42         System.out.println("upLoad");43         return SUCCESS;44         45     }46     47     public File getPicture() {48         return picture;49     }50     public void setPicture(File picture) {51         this.picture = picture;52     }53     public String getPictureFileName() {54         return pictureFileName;55     }56     public void setPictureFileName(String pictureFileName) {57         this.pictureFileName = pictureFileName;58     }59     public String getPictureContentType() {60         return pictureContentType;61     }62     public void setPictureContentType(String pictureContentType) {63         this.pictureContentType = pictureContentType;64     }65     66 }
UpLoadAction代码

  特别注意上面代码第29行,要在webRoot路径下新建一个名为aaa的文件夹,,用于存放上传的文件.  

  UpLoadAction中定义了一个名为picture的File类型的对象,用于接收表单传来的图片文件,Struts2会把图片文件保存到临时文件夹里,然后把路径设置到picture属性上,需要注意的是,临时文件的名称不会是上传文件的原名称,目的是为了保证临时文件夹中文件名不会重复,Struts2根据时间戳随机生成了不重复的文件名,后缀是.tmp.但我们一般希望获取该文件的原始名称,这时,我们还需要定义一个String类型的名为xxxFileName的属性,其中xxx在这个例子里是picture,即为File类型的变量名,同时要想获得原始文件的文件类型,还需要定义一个String类型的名为xxxContentType的变量,xxx也是File类型的变量名.

  Struts2中文件上传的最大值为2m,但我们希望可以自定义最大上传Size,下面是修改了MaxSize(将最大上传大小设置为20m)的Struts.xml:

20971520
/index.jsp
  • 批量文件上传

  与上传单个文件类似,只需要将UpLoadAction里File,xxxFileName,xxxContentType设置为数组类型,然后用for循环遍历读取每个文件,即可,这里主要介绍一下上传多个文件的简单的前端页面怎么写(用到jquery):我们希望的效果是这样(点击添加可以添加一个file选项,点击删除可以删除当前file选项):

            

  upLoad.jsp代码如下:

1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6  7  8  9   10     11     12     My JSP 'upLoad.jsp' starting page13     14     
15
16
17
18
19
22 23 35 36 37 38
40
41 文件:
42
43
44
45 46
upLoad.jsp

  upLoadAction代码如下:

package com.wang.action;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class UpLoadAction extends ActionSupport{    //上传的文件,struts2会把文件封装为File对象    private File[] picture;    //文件名,struts2会把文件名称设置到该变量    private String[] pictureFileName;    //文件类型,struts2会把文件类型设置到该变量    private String[] pictureContentType;        public String upLoad() throws IOException{        //获取request,进而获取文件的路径        HttpServletRequest request=ServletActionContext.getRequest();        String path=request.getRealPath("/aaa");        //最终将文件保存到/upload下        for(int i=0;i
UpLoadAction

  struts.xml不需要修改.

 

转载地址:http://ncjwl.baihongyu.com/

你可能感兴趣的文章
洛谷P4721 【模板】分治 FFT(分治FFT)
查看>>
BI技术
查看>>
检查hdfs块的块-fsck
查看>>
Asp程序的IIS发布
查看>>
设计模式4-代理模式
查看>>
php7扩展开发[8]类方法之间的调用
查看>>
通过C语言HelloWord程序对计算系统理解
查看>>
vue之better-scroll的封装,包含下拉刷新,上拉加载功能及UI(核心为借鉴,我仅仅是给轮子套上了外胎...)...
查看>>
HTML基础-------最初概念以及相关语法
查看>>
如何理解代理?
查看>>
python基础:冒泡和选择排序算法实现
查看>>
python基础一 day13 复习
查看>>
appium===安卓SDK下载很慢的解决办法
查看>>
java.面向对象特征
查看>>
poj2月下旬题解
查看>>
json格式返回到cmd中crul中文乱码问题
查看>>
统计学习概念
查看>>
Oracle学习笔记--第3章 使用sql*plus工具
查看>>
各驱动器和URL
查看>>
javascript生成二维码
查看>>