下载页面download.jsp
...
<body>
<h1>文件下载</h1>
<ul>
<li>下载美女图:<a href="download.action">下载图形文件</a></li>
<li>下载美女文件:<a href="download2.action">下载压缩文件</a></li>
</ul>
</body>
...
===================================
上传页面 upload.jsp
...
<body>
<!-- 错误提示 -->
<div style="color:red">
<s:fielderror/>
</div>
<form action="upload.action" method="post" enctype="multipart/form-data">
文件标题:<input type="text" name="title"/><br/>
选择文件:<input type="file" name="upload"/><br/>
<input type="submit" value="上传"/>
</form>
</body>
...
==========================
上传成功页面 succ.jsp
...
<body>
文件标题:<s:property value=" + title"/><br/><hr/>
文件为:<img alt="美女" src="<s:property value="'upload/'+uploadFileName"/>"/><br/>
</body>
...
============================
判断用户是否有权下载input.jsp
...
<body>
<h1>下载登陆页面</h1>
${requestScope.tip }
<form action="login" method="post">
<table width="300" align="center">
<tr>
<td>用户名:</td>
<td><input type="text" name="username"/></td>
</tr>
<tr>
<td>密 码:</td>
<td><input type="text" name="password"/></td>
</tr>
<tr>
<td><input type="submit" value="登陆"/></td>
</tr>
</table>
</form>
</body>
...
===========UpdateAction==================
package com.zcw.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class UploadAction extends ActionSupport {
private String title;
private File upload;
private String uploadContentType;
private String uploadFileName;
private String savePath;
///////////////上传的限制
private String allowTypes;
public String getAllowTypes() {
return allowTypes;
}
public void setAllowTypes(String allowTypes) {
this.allowTypes = allowTypes;
}
////////////////////////////////////////
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
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;
}
@SuppressWarnings("deprecation")
public String getSavePath() {
return ServletActionContext.getRequest().getRealPath(savePath);
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
@Override
public String execute() throws Exception {
/////////////////////////////////
//将允许上传的文件类型的字符串用“,”分隔成字符数组
String filterResult = this.filterType(this.getAllowTypes().split(","));
//如果当前文件类型不允许上传
if(filterResult != null){
ActionContext.getContext().put("typeError", "您上传的文件类型不正确");
return filterResult;
}
//以服务起器文件保存地址和原文件名建立上传文件输出流
FileOutputStream fos = new FileOutputStream(this.getSavePath()+
"//"+this.getUploadFileName());
//以上传文件建立文件上传流
FileInputStream fis = new FileInputStream(this.getUpload());
//将上传文件写到服务器
byte[] buffer = new byte[1024];
int len = 0;
while((len = fis.read(buffer))>0){
fos.write(buffer,0,len);
}
return SUCCESS;
}
/////////////////////////////////////
/**
* 过滤文件类型
* @param types 系统所有允许上传的文件类型
* @return如果文件类型允许上传返回null否则返回INPUT
*/
public String filterType(String[] types){
//获取文件属性
String fileType = this.getUploadContentType();
for(String type : types){
if(type.endsWith(fileType)){
return null;
}
}
return INPUT;
}
/////////////////////////////////////
}
=========AuthorityDownAction ===============
package com.zcw.action;
import java.io.InputStream;
import java.util.Map;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class AuthorityDownAction extends ActionSupport {
private String inputPath;
public void setInputPath(String inputPath) {
this.inputPath = inputPath;
}
/**
* 定义一个返回inputstream 的方法作为下载入口
* 需要配置stream类型结果指定inputName参数
* @return InputStream
* @throws Exception
*/
public InputStream getTargetFile() throws Exception{
return ServletActionContext
.getServletContext()
.getResourceAsStream(inputPath);
}
@SuppressWarnings("unchecked")
@Override
public String execute() throws Exception {
ActionContext ctx = ActionContext.getContext();
//通过ActionContext访问HttpSession
Map session = ctx.getSession();
String user =(String)session.get("user");
if(user != null && user.endsWith("zcw")){
return SUCCESS;
}
ctx.put("tip", "您还未登录或登录的用户名不正确请重新登录");
return LOGIN;
}
}
==========LoginAction =================
package com.zcw.action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class LoginAction extends ActionSupport {
private String username;
private String password;
private String tip;
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 String getTip() {
return tip;
}
public void setTip(String tip) {
this.tip = tip;
}
@Override
public String execute() throws Exception {
if(this.getUsername().equals("zcw")
&& this.getPassword().equals("zcw")
&& (this.getUsername() != null)
&& (this.getPassword() != null)){
ActionContext.getContext().getSession().put("user", username);
return SUCCESS;
}else{
return LOGIN;
}
}
}
========DownloadAction =============
package com.zcw.action;
import java.io.InputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class DownloadAction extends ActionSupport {
private String inputPath;
public void setInputPath(String inputPath) {
this.inputPath = inputPath;
}
/**
* 定义一个返回inputstream 的方法作为下载入口
* 需要配置stream类型结果指定inputName参数
* @return InputStream
* @throws Exception
*/
public InputStream getTargetFile() throws Exception{
return ServletActionContext
.getServletContext()
.getResourceAsStream(inputPath);
}
}
-------------------------------struts.xml--------------------------------------------------
<struts>
<constant name="struts.custom.i18n.resources" value="messageResource"/>
<constant name="struts.i18n.encoding" value="GBK"></constant>
<package name="zcw" extends="struts-default">
<action name="upload" class="com.zcw.action.UploadAction">
<!-- 配置fileUpload拦截器 -->
<interceptor-ref name="fileUpload">
<!-- 配置允许上传文件的类型 -->
<param name="allowedTypes">
image/bmp,image/png,image/gif,image/jpeg
</param>
<!-- 配置上传文件的大小 -->
<param name="maximumSize">2000</param>
</interceptor-ref>
<!-- 配置系统默认拦截器 -->
<interceptor-ref name="defaultStack"/>
<!-- 动态设置Action 的属性 -->
<param name="savePath">/upload</param>
<result name="success">/succ.jsp</result>
<!-- 配置有关上传错误的input视图 -->
<result name="input">/upload.jsp</result>
</action>
<action name="download" class="com.zcw.action.DownloadAction">
<!-- 指定下载资源的位置 -->
<param name="inputPath">/images/haokan.jpg</param>
<!-- 配置结果类型 为stream-->
<result name="success" type="stream">
<!-- 指定下载文件类型 -->
<param name="contentType">image/jpg</param>
<!-- 通过getTargetFile()返回下载文件的InputStream -->
<param name="inputName">targetFile</param>
<param name="contentDisposition">filename="haokan.jpg"</param>
<!-- 指定下载文件的缓冲大小 -->
<param name="bufferSize">4096</param>
</result>
</action>
<action name="download2" class="com.zcw.action.AuthorityDownAction">
<!-- 指定下载资源的位置 -->
<param name="inputPath">/images/ceshi.rar</param>
<!-- 配置结果类型 为stream-->
<result name="success" type="stream">
<!-- 指定下载文件类型 -->
<param name="contentType">application/rar</param>
<!-- 通过getTargetFile()返回下载文件的InputStream -->
<param name="inputName">targetFile</param>
<param name="contentDisposition">filename="ceshi.rar"</param>
<!-- 指定下载文件的缓冲大小 -->
<param name="bufferSize">4096</param>
</result>
<result name="login">/input.jsp</result>
</action>
<action name="login" class="com.zcw.action.LoginAction">
<result name="login">/input.jsp</result>
<result name="success">/download.jsp</result>
</action>
</package>
</struts>
-------------------------messageResource_zh_CN.properties--------------------------------------------
loginPage=/u767B/u9646/u9875/u9762
su**age=/u6210/u529F/u9875/u9762
errorPage=/u9519/u8BEF/u9875/u9762
failTip=/u5BF9/u4E0D/u8D77/u60A8/u4E0D/u80FD/u767B/u5F55
user=/u7528/u6237/u540D
pass=/u5BC6/u7801
login=/u767B/u5F55
regist=/u6CE8/u518C
succTip=/u6B22/u8FCE/u60A8/u5DF2/u7ECF/u767B/u5F55
welcomeMsg={0}/uFF0C/u60A8/u597D/uFF01/u73B0/u5728/u65F6/u95F4/u662F{1}/uFF01
struts.messages.error.content.type.not.allowed=/u60A8/u53EA/u80FD/u4E0A/u4F20/u56FE/u7247/u6587/u4EF6
struts.messages.error.file.too.large=/u6587/u4EF6/u592A/u5927/u8D85/u8FC72000kb
struts.messages.error.uploading=/u672A/u77E5/u539F/u56E0/u4E0A/u4F20/u5931/u8D25
---------------------------------struts.properties--------------------放在src下自己建------------------------------
struts.multipart.saveDir=/tmp 需要在webroot下建立两个文件夹update(上传目录)images(里面是要下载的文件)
分享到:
相关推荐
在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...
本篇文章将详细探讨如何在Struts2框架下实现文件的上传与下载。 首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在...
在这个"struts2上传和下载文件详细源码"中,我们可以深入理解Struts2如何处理文件上传和下载操作。 1. 文件上传: 在Struts2中,文件上传主要依赖于Apache的Commons FileUpload库。首先,需要在struts.xml配置文件...
在"struts2上传下载项目"中,我们可以深入理解如何利用Struts2实现文件的上传与下载功能。 首先,上传功能在Web应用中十分常见,比如用户在注册时上传头像,或者提交文档等。在Struts2中,我们主要借助`struts2-...
在Struts2中,实现文件上传和下载是常见的需求,对于用户交互和数据交换至关重要。这篇博客文章可能详细讨论了如何在Struts2框架中实现这两个功能。 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,这是...
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括处理用户表单提交、进行文件上传和下载。在Web应用中,文件上传和下载是常见的需求,例如用户上传头像、下载文档等。Struts2通过其Action类和...
Struts2是一个非常流行的...以上就是Struts2中文件上传与下载的基本实现,通过这些步骤,你可以实现用户在Web应用中上传和下载文件的功能。在实际项目中,还需要根据具体需求进行调整和优化,如错误处理、进度显示等。
在Struts2中,文件上传和下载是常见的功能需求,尤其对于处理用户提交的表单数据时,如上传图片、文档等。这个"struts2_上传下载"实例则涵盖了多种实现这些功能的方法。 首先,Struts2的文件上传依赖于Apache的...
在这个特定的项目中,我们关注的是"struts2文件上传下载"的功能,这涉及到用户通过Web界面上传文件到服务器,以及从服务器下载文件到用户的设备。 文件上传是Web应用中的常见需求,例如用户可能需要提交图片、文档...
struts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileupload
以上就是关于Struts文件上传与下载的核心知识点。实际开发中,还需要结合具体的业务需求和安全性要求进行优化和调整。理解这些概念并熟练运用,你就能在Struts框架下实现高效且安全的文件上传和下载功能。
在Struts2中,文件上传和下载是常见的功能需求,对于用户交互和数据交换至关重要。以下是对这些知识点的详细阐述: 1. **文件上传**: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它是一个Apache提供...
Struts2提供了一套完善的机制来处理文件上传,包括图片。本文将详细讲解如何利用Struts2实现图片上传并进行预览。 一、Struts2文件上传基础 1. 添加依赖:在项目中,你需要添加Struts2的核心库和文件上传插件。...
通过以上步骤,你可以实现一个基于Struts2和Hibernate的文件上传与动态下载系统。这个系统能够处理用户上传的文件,将其保存到服务器,同时提供动态下载功能,允许用户根据需要下载文件。在实际开发中,还需要考虑...
在基于Struts2的文件上传下载功能中,它提供了处理用户上传文件和提供文件下载的服务。这个完整的源代码是实现这些功能的一个实例,经过测试确保了其正确性和可用性。 首先,我们要理解Struts2中的Action类。Action...
本文将深入探讨Struts中图片的上传与下载流程,并结合SQL数据库的使用,为开发者提供实用的指导。 **1. 图片上传** 图片上传在Web应用中主要涉及以下步骤: 1. **前端页面设计**:创建一个HTML表单,包含`...
本项目基于MyEclipse平台,实现了Struts2框架下的文件上传与下载功能,这是Web应用中常见的需求,例如用户可以上传头像、文档等,或者下载公共资源。 在Struts2中,文件上传主要依赖于`struts2-core`库中的`...
总结来说,Struts2通过与Commons FileUpload库的集成,提供了便捷的文件上传和下载功能。通过Action和配置文件的设置,我们可以轻松地处理用户上传的文件,并实现文件的下载服务。在实际项目中,还需要考虑错误处理...