struts2文件上传下载前段html,struts.xml配置和后端代码

2024-04-30 19:58

本文主要是介绍struts2文件上传下载前段html,struts.xml配置和后端代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

单文件上传、多文件上传和文件下载

单文件上传:

index页面:

复制代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>文件上传</title></head><body><!-- 上传页面的准备 --><s:form action="upload.action" enctype="multipart/form-data" method="post"><s:textfield name ="title" label ="标题"/><br/><s:file name ="upload" label="选择文件"/><br/><s:submit name ="submit" value ="上传文件"/></s:form> </body>
</html>
复制代码

 

struts.xml配置相应的action:

<!--  单文件上传--><action name="upload" class="action.UploadAction"><param name="savePath">/image</param><result name="success">/upload_success.jsp</result></action>

 

对应的UploadAction类:

复制代码
public class UploadAction extends ActionSupport{//封装上传文件的属性private File upload;//封装上传文件的类型private String uploadContentType;//封装上传文件的名称private String uploadFileName;public File getUpload() {return upload;}public void setUpload(File upload) {this.upload = upload;}public String getUploadContentType() {return uploadContentType;}public void setUploadContentType(String uploadContentType) {this.uploadContentType = uploadContentType;}public String getUploadFileName() {return uploadFileName;}public void setUploadFileName(String uploadFileName) {this.uploadFileName = uploadFileName;}public void setSavePath(String savePath) {this.savePath = savePath;}//获取文件上传的路径private String savePath;@Overridepublic String execute() throws Exception {//创建缓存数组byte [] buffer =new byte[1024];//读取文件FileInputStream fis =new FileInputStream(getUpload());//保存文件,并设置保存目录的路径FileOutputStream fos =new FileOutputStream(getSavePath()+"\\"+this.getUploadFileName());int length =fis.read(buffer);while(length>0){//每次写入length长度的内容fos.write(buffer,0,length);length=fis.read(buffer);}fis.close();fos.flush();fos.close();return SUCCESS;}public String getSavePath(){return ServletActionContext.getServletContext().getRealPath(savePath);}
}
复制代码

 

 

多文件上传:

和单文件上传差不多只需要在index页面多添加几个文件上传的标签:

index页面:

复制代码
<body><!-- 上传页面的准备 --><s:form action="uploads.action" enctype="multipart/form-data" method="post"><s:textfield name ="title" label ="标题"/><br/><s:file name ="uploads" label="选择文件"/><br/><s:file name ="uploads" label="选择文件"/><br/><s:file name ="uploads" label="选择文件"/><br/><s:submit name ="submit" value ="上传文件"/></s:form> </body>
复制代码

 

struts.xml配置相应的action:

复制代码
<!-- 多文件上传 --><action name ="uploads" class="action.UploadsAction"><!--通过param参数设置保存目录的路径 --><param name="savePath">/image</param><result name="success">/upload_success.jsp</result></action>
复制代码

 

对应的UploadsAction类:

复制代码
public class UploadsAction extends ActionSupport{//封装上传文件的属性private File[] uploads;//封装上传文件的类型private String[] uploadContentType;//封装上传文件的名称private String[] uploadFileName;public File[] getUploads() {return uploads;}public void setUploads(File[] uploads) {this.uploads = uploads;}public String[] getUploadContentType() {return uploadContentType;}public void setUploadContentType(String[] uploadContentType) {this.uploadContentType = uploadContentType;}public String[] getUploadFileName() {return uploadFileName;}public void setUploadFileName(String[] uploadFileName) {this.uploadFileName = uploadFileName;}//获取文件上传的路径private String savePath;@Overridepublic String execute() throws Exception {//创建缓存数组byte [] buffer =new byte[1024];//读取文件for (int i = 0; i < uploads.length; i++) {FileInputStream fis =new FileInputStream(getUploads()[i]);//保存文件,并设置保存目录的路径FileOutputStream fos =new FileOutputStream(getSavePath()+"\\"+this.getUploadFileName()[i]);int length =fis.read(buffer);while(length>0){//每次写入length长度的内容fos.write(buffer,0,length);length=fis.read(buffer);}fis.close();fos.flush();fos.close();}return SUCCESS;}public String getSavePath(){return ServletActionContext.getServletContext().getRealPath(savePath);}
}
复制代码

 

文件下载:

index页面:

<body><a href="download.action?fileName=16.1.txt">点击此处下载文档</a>  </body>

 

struts.xml配置相应的action:

复制代码
<action name="download" class="action.FileDownAction"><!--下载文件的路径  --><param name="inputPath">/image</param><result name="success" type="stream"><!--指定内容类型,下载的文件,可执行文件  --><param name="contentType">application/octet-stream</param><param name="inputName">inputStream</param><param name="contentDisposition">attachment;filename="${fileName}"</param><!--读取和下载文件时缓存区大小  --><param name="bufferSize">4096</param></result></action>
复制代码

 

对应的UploadsAction类:

复制代码
public class FileDownAction extends ActionSupport {//读取下载文件的目录   private String inputPath;//下载文件的文件名private String fileName;//读取下载文件的输入流private InputStream inputStream;//下载文件的类型private String contentType;public String getInputPath() {return inputPath;}public void setInputPath(String inputPath) {this.inputPath = inputPath;}public String getFileName() {return fileName;}public void setFileName(String fileName) {this.fileName = fileName;}//文件下载的核心,获取输入流public InputStream getInputStream() throws Exception {//获取真实的路径String path =ServletActionContext.getServletContext().getRealPath(inputPath);return new BufferedInputStream(new FileInputStream(path+"\\"+fileName));}public void setInputStream(InputStream inputStream) {this.inputStream = inputStream;}public String getContentType() {return contentType;}public void setContentType(String contentType) {this.contentType = contentType;}@Overridepublic String execute() throws Exception {return SUCCESS;}}
文章来源:https://www.cnblogs.com/qingzhi/p/5945881.html

这篇关于struts2文件上传下载前段html,struts.xml配置和后端代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/949784

相关文章

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

Spring Boot结成MyBatis-Plus最全配置指南

《SpringBoot结成MyBatis-Plus最全配置指南》本文主要介绍了SpringBoot结成MyBatis-Plus最全配置指南,包括依赖引入、配置数据源、Mapper扫描、基本CRUD操... 目录前言详细操作一.创建项目并引入相关依赖二.配置数据源信息三.编写相关代码查zsRArly询数据库数

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.