文件上传:
1,upload.jsp如下:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<title>My JSP 'upload.jsp' starting page</title>
<!--下面script实现多文件上传-->
<script type ="text/javascript">
function onMore(){
var td =document.getElementById("more");
var br = document.createElement("br");
var input = document.createElement("input");
var button = document.createElement("input");
input.type = "file";
input.name="file";
button.type="button";
button.value="删除";
//当点击删除时,删除一行。
button.onclick = function(){
td.removeChild(br);
td.removeChild(input);
td.removeChild(button);
}
// 下面三句增加一行。
td.appendChild(br);
td.appendChild(input);
td.appendChild(button);
}
</script>
</head>
<body>
<table align = "center">
<tr>
<td><s:fielderror cssStyle="color:red"></s:fielderror></td>
</tr>
</table>
<s:form action="upload" theme="simple" method="post" enctype="multipart/form-data">
<table align="center" border="1" width="60%">
<tr>
<td>文件</td>
<td id = "more">
<s:file name="file"></s:file>
<input type = "button" value = "更多.." onclick = "onMore()">
</td>
</tr><br>
<tr>
<td>
<s:submit value="submit"></s:submit>
</td>
<td>
<s:reset value="reset"></s:reset>
</td>
</tr>
</table>
</s:form>
</body>
</html>
2.struts.xml配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.custom.i18n.resources" value="message"></constant>
<!-- 上传文件编码 -->
<constant name="struts.i18n.encoding" value="gbk"></constant>
<!-- 上传文件临时文件位置 -->
<constant name="struts.multipart.saveDir" value="c:\"></constant>
<package name="struts2" extends="struts-default">
<action name="upload" class = "com.struct2.test.UploadAction">
<result name = "success">/UpLoad/uploadresult.jsp</result>
<result name = "input">/UpLoad/upload.jsp</result>
<interceptor-ref name="fileUpload">
<!-- 单个上传文件的最大值-->
<param name="maximumSize">409600</param>
<!-- 只能上传的文件的类型,可到tomcat的web-xml中查看各种文件类型-->
<param name="allowedTypes">text/html</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>
3.UploadAction.jsp:
package com.struct2.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class UploadAction extends ActionSupport {
private String username;
private String password;
private List<File> file;
private List<String> fileFileName;//文件名+FileName
private List<String> fileContentType;//文件名+ContentType
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public List<File> getFile() {
return file;
}
public void setFile(List<File> file) {
this.file = file;
}
public List<String> getFileFileName() {
return fileFileName;
}
public void setFileFileName(List<String> fileFileName) {
this.fileFileName = fileFileName;
}
public List<String> getFileContentType() {
return fileContentType;
}
public void setFileContentType(List<String> fileContentType) {
this.fileContentType = fileContentType;
}
@Override
public String execute() throws Exception {
for(int i = 0 ;i<file.size();++i){
System.out.println(file.get(i));
if(!file.get(i).exists())
{return INPUT;}
//拿到上传的文件
InputStream is = new FileInputStream(file.get(i));
//设置文件存储位置.
String root = ServletActionContext.getRequest().getRealPath("/UpLoad");
File destFile = new File(root,this.getFileFileName().get(i));
//将上传得到的文件输出.
OutputStream os = new FileOutputStream(destFile);
byte[] buffer = new byte[400];
int length = 0;
while((length=is.read(buffer))>0){
os.write(buffer,0,length);
}
is.close();
os.close();
}
return SUCCESS;
}
}
</struts>
4.uploadresult.jsp
...............................
<body>
username:<s:property value="username"/><br>
password:<s:property value = "password"/><br>
file:<s:property value = "fileFileName"/>
</body>
文件下载:
1.download.jsp:
<body>
<a href = "download.action">下载</a>
</body>
2.struts.xml中配置:
<action name="download" class = "com.struct2.test.DownloadAction">
<result name = "success" type = "stream">
<!-- 设置为attachment,否则浏览器直接打开而不会出现下载页面 -->
<param name="contentDisposition">attachment;filename=${fileName}</param>
<!-- downloadFile为DownloadAction中的方法名中的属性-->
<param name="inputName">downloadFile</param>
<!-- 下载文件的类型,可到tomcat的web-xml中查看各种文件类型-->
<param name="contentType">text/html</param>
<!-- 输出时缓冲区的大小 -->
<param name="bufferSize">4096</param>
</result>
3.DowmloadAction.java
package com.struct2.test;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class DownloadAction extends ActionSupport {
//String fileName = "";
public InputStream getDownloadFile(){
return ServletActionContext.getServletContext().getResourceAsStream("/下载中文文件测试.html");
}
@Override
public String execute() throws Exception {
//这里添加下载权限设置.
return SUCCESS;
}
public String getFileName() {
// DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String fileName = "下载中文文件测试.html";
// fileName = "序列号(" + df.format(new Date()) + ").html";
try {
//设置下载文件名编码
return new String(fileName.getBytes(), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
return "impossible.txt";
}
}
}
国际化资源文件message.properties:
xwork.default.invalid.fieldvalue={0}\u8f93\u5165\u9519\u8bef
struts.messages.error.file.too.large=File too large
struts.messages.error.content.type.not.allowed=file type not be allowed
分享到:
相关推荐
在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...
本篇文章将详细探讨如何在Struts2框架下实现文件的上传与下载。 首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在...
在"struts2上传下载项目"中,我们可以深入理解如何利用Struts2实现文件的上传与下载功能。 首先,上传功能在Web应用中十分常见,比如用户在注册时上传头像,或者提交文档等。在Struts2中,我们主要借助`struts2-...
在Struts2中,文件上传和下载是常见的功能需求,尤其对于处理用户提交的表单数据时,如上传图片、文档等。这个"struts2_上传下载"实例则涵盖了多种实现这些功能的方法。 首先,Struts2的文件上传依赖于Apache的...
在这个特定的项目中,我们关注的是"struts2文件上传下载"的功能,这涉及到用户通过Web界面上传文件到服务器,以及从服务器下载文件到用户的设备。 文件上传是Web应用中的常见需求,例如用户可能需要提交图片、文档...
在这个"struts2上传和下载文件详细源码"中,我们可以深入理解Struts2如何处理文件上传和下载操作。 1. 文件上传: 在Struts2中,文件上传主要依赖于Apache的Commons FileUpload库。首先,需要在struts.xml配置文件...
4. **插件支持**:Struts2拥有丰富的插件库,可以实现AJAX、上传下载、国际化、数据验证等功能。例如,Struts2-dojo-plugin提供了与Dojo库的集成,使得Web应用可以使用富客户端功能。 5. **异常处理**:Struts2提供...
这篇博客文章“Struts2 上传下载模板”可能提供了关于如何在Struts2框架中实现这一功能的详细教程。 首先,我们来讨论文件上传。在Struts2中,文件上传通常依赖于`Apache Commons FileUpload`库,它处理了文件的多...
在基于Struts2的文件上传下载功能中,它提供了处理用户上传文件和提供文件下载的服务。这个完整的源代码是实现这些功能的一个实例,经过测试确保了其正确性和可用性。 首先,我们要理解Struts2中的Action类。Action...
总之,这个项目实例为使用Struts2和Uploadify实现带进度条的多文件上传及下载功能提供了一个基础模板,对于学习和实践此类功能的开发者来说是一个有价值的参考。通过深入研究和理解这个项目的代码,可以提升对Struts...
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括MVC设计模式的实现、类型转换、国际化、拦截器等。在本篇“Struts2学习笔记三”中,我们将聚焦于Struts2的类型转换这一核心特性。类型转换在处理...
在Struts2中,实现文件上传和下载是常见的需求,对于用户交互和数据交换至关重要。这篇博客文章可能详细讨论了如何在Struts2框架中实现这两个功能。 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,这是...
使用struts2框架进行文件的上传并限制文件的大小与类型,使用struts2框架实现文件下载
本项目基于MyEclipse平台,实现了Struts2框架下的文件上传与下载功能,这是Web应用中常见的需求,例如用户可以上传头像、文档等,或者下载公共资源。 在Struts2中,文件上传主要依赖于`struts2-core`库中的`...
在"struts2上传下载+前端剪切图片"这个主题中,我们将探讨Struts2框架如何处理文件上传和下载功能,以及如何在前端实现图片的剪切操作。 **文件上传**: 在Struts2中,文件上传主要依赖于Apache的Commons ...
Struts2提供了一套完善的机制来处理文件上传,包括图片。本文将详细讲解如何利用Struts2实现图片上传并进行预览。 一、Struts2文件上传基础 1. 添加依赖:在项目中,你需要添加Struts2的核心库和文件上传插件。...
在Struts2中,文件上传和下载是常见的功能需求,对于用户交互和数据交换至关重要。以下是对这些知识点的详细阐述: 1. **文件上传**: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它是一个Apache提供...
在这个"struts2 上传文件及打包下载zip"的示例中,我们将探讨如何利用Struts2实现文件上传和下载功能。 首先,文件上传是Web应用程序中的常见需求。在Struts2中,我们可以使用`Struts2`提供的`CommonsFileUpload`...
struts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileupload