页面(freemark页面):
<input type="file" id="filePath" name="filePath" value="${filePath?if_exists}" class="textbox_css" style="width:500px" />
<a href="${base}/system/batchDomnManager.action?act=download"><font color="blue">excle模板下载</font></a>
<input type="button" class="btn" name="btnUpload" value="附件上传" onclick="addOperatorUpload();" />
//文件上传操作
function addOperatorUpload(){
var filepath=document.getElementById("filePath").value;
if(''==filepath){
alert("请选择要上传的excle文件");
return;
}
document.location.href="${base}/system/operatorBatchManager.action?act=doOther&filePath="+filepath;
}
**********************************************************************
action:
/**
* 文件的路径,页面中只要写name="filePath",这样后台就可以拿到值啦
*/
private String filePath;
/**
* 文件
*/
private File myFile;
// myFileContentType属性用来封装上传文件的类型
private String myFileContentType;
// myFileFileName属性用来封装上传文件的文件名
private String myFileFileName;
private String fileName;// 初始的通过param指定的文件名属性
private String inputPath;// 指定要被下载的文件路径
//以上get,set略
//以下是文件下载方法
public String execute() throws Exception {
if("download".equals(this.act)){
return SUCCESS;
}else{
return super.execute();
}
}
public InputStream getInputStream() throws Exception {
// 文件下载目录路径
String downloadDir = ServletActionContext.getServletContext()
.getRealPath("/upload");
// 文件下载路径
String downloadFile = ServletActionContext.getServletContext()
.getRealPath(inputPath);
File file = new File(downloadDir);
// 真实文件路径,去掉里面的..等信息
downloadFile = file.getCanonicalPath();
// 发现企图下载不在/upload下的文件,就显增空内容
if (!downloadFile.startsWith(downloadDir)) {
return null;
}
// 通过 ServletContext,也就是application 来读取数据
return ServletActionContext.getServletContext().getResourceAsStream(
inputPath);
}
/**
* 提供转换编码后的供下载用的文件名
*/
public String getDownloadFileName() {
String downFileName = fileName;
try {
downFileName = new String(downFileName.getBytes(), "GBK");
} catch (Exception e) {
e.printStackTrace();
}
return downFileName;
}
//以下是文件上传方法
public String doOther() throws Exception {
myFile = new File(filePath);
// 获得文件名
String type = myFile.getName();// this.getMyFileFileName();
int i = 0;
while (i != -1) {
// 找到上传文件的类型的位置,这个地方的是'.'
i = type.indexOf(".");
// 截取上传文件的后缀名,此时得到了文件的类型
type = type.substring(i + 1);
}
// 如果是excle文件就开始处理
if ("xls".equals(type) || "xlsx".equals(type)) {
// 获得文件路径
String str_path = myFile.toString();
this.excelDataImportOracle(str_path);
} else {
// 文件类型不对
this.setErrorInfo(getText("info.fileErrorType"));
}
return "addInput";
}
public void excelDataImportOracle(String pathname) throws Exception {
try {
/** 上传文件到服务器 */
// 得到文件存放的目录路径
String dir = ServletActionContext.getServletContext().getRealPath(
"/upload");
String fileName = myFile.getName();
String targetFileName = generateFileName(fileName);
InputStream is = new FileInputStream(myFile);
// 设置目标文件
File toFile = new File(dir, targetFileName);
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(toFile));
byte[] b = new byte[20480];
int length = 0;
while ((length = is.read(b)) != -1) {
bos.write(b, 0, length);
bos.flush();
}
bos.close();
is.close();
} catch (Exception e) {
e.printStackTrace();
}
*********************************************************************
struts.xml配置文件:
<!-- 批量用户管理-->
<action name="operatorBatchManager" class="com.tempus.fw.operatorBatchAction">
<result name="success" type="redirect">
operatorSearch.action?act=doquery&busiId=searchOperator
</result>
<result name="addInput" type="freemarker">
/WEB-INF/core/pages/system/operatorBatchOpt.ftl
</result>
</action>
<!-- 批量用户模板下载管理-->
<action name="batchDomnManager" class="com.tempus.fw.operatorBatchAction">
<param name="inputPath">/upload/mould.xls</param>
<!-- 初始文件名 -->
<param name="fileName">mould.xls</param>
<!-- 下載配置 -->
<result name="success" type="stream">
<!-- 下載類型和編碼配置 -->
<param name="contentType">application/octet-stream;charset=GBK</param>
<!-- action中提供输入流的属性名称,缺省为inputStream -->
<param name="inputName">inputStream</param>
<!-- 使用经过转码的文件名作为下载文件名,downloadFileName属性 对应action类中的方法 getDownloadFileName() -->
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
<!-- 緩存 -->
<param name="bufferSize">4096</param>
</result>
</action>
<input type="file" id="filePath" name="filePath" value="${filePath?if_exists}" class="textbox_css" style="width:500px" />
<a href="${base}/system/batchDomnManager.action?act=download"><font color="blue">excle模板下载</font></a>
<input type="button" class="btn" name="btnUpload" value="附件上传" onclick="addOperatorUpload();" />
//文件上传操作
function addOperatorUpload(){
var filepath=document.getElementById("filePath").value;
if(''==filepath){
alert("请选择要上传的excle文件");
return;
}
document.location.href="${base}/system/operatorBatchManager.action?act=doOther&filePath="+filepath;
}
**********************************************************************
action:
/**
* 文件的路径,页面中只要写name="filePath",这样后台就可以拿到值啦
*/
private String filePath;
/**
* 文件
*/
private File myFile;
// myFileContentType属性用来封装上传文件的类型
private String myFileContentType;
// myFileFileName属性用来封装上传文件的文件名
private String myFileFileName;
private String fileName;// 初始的通过param指定的文件名属性
private String inputPath;// 指定要被下载的文件路径
//以上get,set略
//以下是文件下载方法
public String execute() throws Exception {
if("download".equals(this.act)){
return SUCCESS;
}else{
return super.execute();
}
}
public InputStream getInputStream() throws Exception {
// 文件下载目录路径
String downloadDir = ServletActionContext.getServletContext()
.getRealPath("/upload");
// 文件下载路径
String downloadFile = ServletActionContext.getServletContext()
.getRealPath(inputPath);
File file = new File(downloadDir);
// 真实文件路径,去掉里面的..等信息
downloadFile = file.getCanonicalPath();
// 发现企图下载不在/upload下的文件,就显增空内容
if (!downloadFile.startsWith(downloadDir)) {
return null;
}
// 通过 ServletContext,也就是application 来读取数据
return ServletActionContext.getServletContext().getResourceAsStream(
inputPath);
}
/**
* 提供转换编码后的供下载用的文件名
*/
public String getDownloadFileName() {
String downFileName = fileName;
try {
downFileName = new String(downFileName.getBytes(), "GBK");
} catch (Exception e) {
e.printStackTrace();
}
return downFileName;
}
//以下是文件上传方法
public String doOther() throws Exception {
myFile = new File(filePath);
// 获得文件名
String type = myFile.getName();// this.getMyFileFileName();
int i = 0;
while (i != -1) {
// 找到上传文件的类型的位置,这个地方的是'.'
i = type.indexOf(".");
// 截取上传文件的后缀名,此时得到了文件的类型
type = type.substring(i + 1);
}
// 如果是excle文件就开始处理
if ("xls".equals(type) || "xlsx".equals(type)) {
// 获得文件路径
String str_path = myFile.toString();
this.excelDataImportOracle(str_path);
} else {
// 文件类型不对
this.setErrorInfo(getText("info.fileErrorType"));
}
return "addInput";
}
public void excelDataImportOracle(String pathname) throws Exception {
try {
/** 上传文件到服务器 */
// 得到文件存放的目录路径
String dir = ServletActionContext.getServletContext().getRealPath(
"/upload");
String fileName = myFile.getName();
String targetFileName = generateFileName(fileName);
InputStream is = new FileInputStream(myFile);
// 设置目标文件
File toFile = new File(dir, targetFileName);
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(toFile));
byte[] b = new byte[20480];
int length = 0;
while ((length = is.read(b)) != -1) {
bos.write(b, 0, length);
bos.flush();
}
bos.close();
is.close();
} catch (Exception e) {
e.printStackTrace();
}
*********************************************************************
struts.xml配置文件:
<!-- 批量用户管理-->
<action name="operatorBatchManager" class="com.tempus.fw.operatorBatchAction">
<result name="success" type="redirect">
operatorSearch.action?act=doquery&busiId=searchOperator
</result>
<result name="addInput" type="freemarker">
/WEB-INF/core/pages/system/operatorBatchOpt.ftl
</result>
</action>
<!-- 批量用户模板下载管理-->
<action name="batchDomnManager" class="com.tempus.fw.operatorBatchAction">
<param name="inputPath">/upload/mould.xls</param>
<!-- 初始文件名 -->
<param name="fileName">mould.xls</param>
<!-- 下載配置 -->
<result name="success" type="stream">
<!-- 下載類型和編碼配置 -->
<param name="contentType">application/octet-stream;charset=GBK</param>
<!-- action中提供输入流的属性名称,缺省为inputStream -->
<param name="inputName">inputStream</param>
<!-- 使用经过转码的文件名作为下载文件名,downloadFileName属性 对应action类中的方法 getDownloadFileName() -->
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
<!-- 緩存 -->
<param name="bufferSize">4096</param>
</result>
</action>
发表评论
文章已被作者锁定,不允许评论。
-
Http post请求
2017-08-23 10:14 838package com.java.util; import ... -
Properties 文件读取
2017-08-23 09:52 497package com.java.util; import ... -
Build模式练习
2017-08-02 15:06 471/** * Build模式练习 * @author Adm ... -
JSON转换工具类
2016-08-29 19:56 557import java.beans.Introspection ... -
java基础知识
2016-08-25 16:26 437一、Redis和Memcache的区别 ... -
java常用Utils整理
2016-08-25 16:25 1605package com.service_im.spoon.ut ... -
Java获取当前时间并转化成字符串
2012-11-15 18:08 3309package com.happy.sqlite.test; ... -
对于特殊字符保存到数据库后再读出原样输出到页面
2012-08-29 18:25 976/** *如<a href="http: ... -
struts2-excel文件的读取
2012-07-03 19:34 823页面: <input type="file&q ... -
heibernate多对多表的处理
2012-06-21 10:56 1101老师Teacher 与 课程Course 是一个多对多的关系, ... -
树列表遍历
2012-06-18 21:32 655//方法如下: public static void main ... -
列表项左右移动
2012-06-02 22:58 750<!doctype html public " ... -
JAVA修饰符类型解释
2012-03-12 19:39 792public的类、类属变量及方法,包内及包外的任何类均可以访问 ... -
简单常用方法接口_2
2012-02-16 16:06 648第三步,定义具体dao接口 package dao; imp ... -
log4j的应用实例
2012-02-09 17:00 732第一步,要项目的src下面建一个log4j.propertie ... -
简单常用方法接口_1
2011-02-08 02:38 654第一步,写泛型 package d ...
相关推荐
在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户在Web表单中提交的文件,如图片、文档等。下面将详细介绍Struts2中文件上传和下载的实现方法。 ### 1. 文件上传 #### 1.1 配置Struts2 首先,我们...
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括处理用户表单提交、进行文件上传和下载。在Web应用中,文件上传和下载是常见的需求,例如用户上传头像、下载文档等。Struts2通过其Action类和...
在这个主题“Struts2文件上传与下载”中,我们将深入探讨如何在Struts2框架中实现文件的上传和下载功能,这对于创建交互式的Web应用是至关重要的。 文件上传允许用户通过Web表单提交文件到服务器,而文件下载则是将...
在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...
Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java ...以上就是使用Struts2框架实现文件上传下载的基本步骤和关键知识点。在实际开发中,可以根据项目需求进行调整和优化,确保功能的稳定性和安全性。
在Struts2中,文件上传和下载是常见的功能需求,对于用户交互和数据交换至关重要。以下是对这些知识点的详细阐述: 1. **文件上传**: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它是一个Apache提供...
### Struts2文件上传与下载教程 #### 一、文件上传原理及实现 **1.1 基础概念** 文件上传是Web开发中的常见需求之一。在Struts2框架中,实现文件上传主要依赖于表单的`enctype`属性设置为`multipart/form-data`。...
在这个特定的项目中,我们关注的是"struts2文件上传下载"的功能,这涉及到用户通过Web界面上传文件到服务器,以及从服务器下载文件到用户的设备。 文件上传是Web应用中的常见需求,例如用户可能需要提交图片、文档...
通过以上步骤,你可以实现一个基于Struts2和Hibernate的文件上传与动态下载系统。这个系统能够处理用户上传的文件,将其保存到服务器,同时提供动态下载功能,允许用户根据需要下载文件。在实际开发中,还需要考虑...
struts2文件的上传与下载,包含超出指定文件大小之后的提示。更多详细内容,请参考博客:http://blog.csdn.net/qq_20889581/article/details/52838848
这个压缩包包含了实现Struts2文件上传所需的全部jar包,这些库文件对于理解和实现文件上传功能至关重要。 首先,我们要了解Struts2文件上传的基本流程。当用户通过表单提交包含文件输入字段的请求时,Struts2框架会...
在Struts2中,文件上传功能是常见的需求,比如用户可能需要上传个人照片、文档或者其他类型的文件。在这个"Struts2之struts2文件上传详解案例struts011"中,我们将深入探讨如何实现这一功能。 首先,我们需要了解...
在实际项目中,文件上传和下载功能是必不可少的,本实例将详细讲解如何在Struts2框架下实现单个文件及多个文件的上传与下载。 首先,我们需要在Struts2的配置文件(struts.xml)中添加相关的Action配置,以便处理文件...
struts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileupload
### Struts2 文件上传与下载实现详解 #### 一、简介 在Web开发中,文件的上传和下载是非常常见的需求之一。Struts2框架作为Java Web开发中的一个重要框架,提供了非常方便的方式来处理这类操作。本文将详细介绍如何...
总结起来,使用Struts实现文件上传下载涉及前端表单设计、后端处理逻辑、文件存储策略以及安全控制等多个方面。在实践中,我们还需要考虑到性能优化和用户体验提升,例如使用异步上传、进度条展示等技术。