Struts2实现多文件上传功能
作者:Giving_bestself 发布时间:2021-11-01 13:50:25
标签:Struts2,上传
前台form 表单:设置method=post,enctype=multipart/form-data。
struts2在原有的上传解析器继承上做了进一步封装,更进一步简化了文件上传。
Action需要使用3个属性来封装该文件域的信息:
(1)类型为File的*属性封装了该文件域对应的文件内容;
(2)类型为String的***FileName属性封装了该文件域对应的文件的文件类型;
(3)类型为String的***ContentType属性封装了该文件域对应的文件的类型。
具体实现:
新建web项目
添加struts2相关包
myeclipse可直接下载,右击项目,如下。
前台
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<body>
<form action="upload.action" method="post" enctype="multipart/form-data">
<input type="file" name="upload" multiple="multiple"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>UploadFile</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
</web-app>
配置struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
<constant name="struts.devMode" value="true"/>
<constant name="struts.multipart.saveDir" value="/tmp"/>
<constant name="struts.custom.i18n.resources" value="app"></constant>
<package name="default" namespace="/" extends="struts-default">
<action name="upload" class="com.yf.action.UploadAction">
<result>/index.jsp</result>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>
</struts>
后台代码
public class UploadAction extends ActionSupport{
private List<File> upload;
private List<String> uploadContentType;
private List<String> uploadFileName;
public List<File> getUpload() {
return upload;
}
public void setUpload(List<File> upload) {
this.upload = upload;
}
public List<String> getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(List<String> uploadContentType) {
this.uploadContentType = uploadContentType;
}
public List<String> getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(List<String> uploadFileName) {
this.uploadFileName = uploadFileName;
}
@Override
public String execute() throws Exception {
//文件保存路径
String path = ServletActionContext.getServletContext().getRealPath("/images");
File file = new File(path);
//不存在则创建
if(!file.exists()){
file.mkdir();
}
//循环将文件上传到指定路径
for(int i = 0; i< upload.size(); i++){
FileUtils.copyFile(upload.get(i), new File(file,uploadFileName.get(i)));
}
return SUCCESS;
}
结果如下
来源:http://blog.csdn.net/giving_bestself/article/details/77513177
0
投稿
猜你喜欢
- 前言 红包文化源远流长。从古时的红色纸包,到手
- 在idea中将创建的java web项目部署到Tomcat中采用的工具idea 2018.3.6 Tomcat71.先创建第一个新项目sec
- Person实体类package com.ljq.domain;public class Person {  
- 分转元private String fenToYuan(String amount){ NumberFormat format
- 官网下载直接打开官网:http://www.oracle.com/technetwork/java/javase/downloads/jdk
- 自动配置底层源码分析本次springboot源码来自2.6.6版本。@EnableAutoConfiguration源码解析在springb
- 本地异步处理,采用事件机制 可以使 代码解耦,更易读。事件机制实现模式是 观察者模式(或发布订阅模式),主要分为三部分:发布者、监听者、事件
- 本文实例为大家分享了Android实现APP秒表功能的具体代码,供大家参考,具体内容如下这几天一直在看安卓,也正好赶上老师布置的作业,所以就
- 目录前言一、Spring Boot对Redis的支持二、实战1、添加依赖2、redis配置3、实现序列化4、创建Redis连接工厂,同时注册
- 前言:在 Spring 中, IOC 是很重要的概念,其本质就是 map 结构,存储容器和业务 Be
- 1.问题分析我们在开发中经常遇到多个实体类有共同的属性字段,例如在用户注册时需要设置创建时间、创建人、修改时间、修改人等字段,在用户编辑信息
- 本文实例讲述了C#实现输入10个数存入到数组中并求max和min及平均数的方法。分享给大家供大家参考,具体如下:using System;u
- 员工管理系统要求如下:通过面向对象的编程思想,实现员工信息的增删改查,存储结构为数组。限定数组长度为100。实现页面:添加员工查找员工修改员
- Android Studio在实现隐藏标题栏和状态栏上和Eclipse是完全不一样的。在Eclipse上隐藏标题栏和状态栏的代码如下:方法一
- 本文实例讲述了Android编程使用Service实现Notification定时发送功能。分享给大家供大家参考,具体如下:/** * 通过
- 1、准备工作首先需要有一个用于旋转的图片需要考虑如何开始、结束、加速、减速2、加速减速原理本次的动画采用RotateAnimation,初始
- 需求是需要在一个已经存在的页面添加一个可拖动的浮层广告。使用到的技术:ViewDragHelper效果如图:封装好的类(继承自FrameLa
- 1使用背景在实际项目中其中一部分逻辑可能会因为调用了外部服务或者等待锁等情况下出现不可预料的异常,在这个时候我们可能需要对调用这部分逻辑进行
- 指定委托那些办理者处理任务节点,也就是只有此办理者才有操作此节点的操作权限1、直接指定流程图配置实现:在流程图属性栏设置Assignee属性
- 这篇文章主要介绍了SpringBoot多模块项目框架搭建过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值