`
hua04104
  • 浏览: 248830 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2的文件上传和下载

阅读更多
1.文件上传
  upload.jsp
<body>
  	<span style="color:red"><s:property value="#request.typeError"/></span>
  	<span style="color:red"><s:property value="#request.sizeError"/></span>
  	<span style="color:red"><s:fielderror/></span>
  	<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>

   UploadAction.java
package com.cs.struts2.helloworld;

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;

public class UploadAction extends ActionSupport {
	
	private String title;
	private File upload;
	private String uploadContentType;
	private String uploadFileName;
	private String savePath;
	private String allowTypes;
	private int fileSize;
	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;
	}
	public String getSavePath() {
		return ServletActionContext.getRequest().getRealPath(savePath);
	}
	public void setSavePath(String savePath) {
		this.savePath = savePath;
	}
	
	@Override
	public String execute() throws Exception {
		System.out.println(this.getUploadContentType());
/*			
		//验证类型
		String filterResult = this.filterType(getAllowTypes().split(","));
		if(filterResult != null) {
			ActionContext.getContext().put("typeError", "上传的文件类型错误");
			return filterResult;
		}
		
    	//验证大小
		String filterSizeResult = this.filterSize(this.getFileSize());
		if(filterSizeResult != null) {
			ActionContext.getContext().put("sizeError", "上传的文件大小错误");
			return filterSizeResult;
		}
*/		
		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;
	}
/*
	public String getAllowTypes() {
		return allowTypes;
	}
	public void setAllowTypes(String allowTypes) {
		this.allowTypes = allowTypes;
	}
	//过滤类型
	public String filterType(String[] types) {
		String fileType = this.getUploadContentType();
		for(String type:types) {
			if(fileType.equals(type)) {
				return null;
			}
		}
		return INPUT;
	}
	public int getFileSize() {
		return fileSize;
	}
	
	public void setFileSize(int fileSize) {
		this.fileSize = fileSize;
	}
	
	//过滤大小(1M=1024*1024)
	public String filterSize(int fileSize) {
		if(this.getUpload().length()<= fileSize) {
			return null;
		}
		return INPUT;
	}
*/
}


    struts.xml
<action name="upload" class="com.cs.struts2.helloworld.UploadAction">
    		<param name="savePath">/upload</param>
    		<!-- 
    		<param name="allowTypes">image/jpeg,image/bmp,image/gif,image/jpeg</param>
    		<param name="fileSize">71680</param>
    		 -->
    		 <interceptor-ref name="fileUpload">
    		 	<param name="allowedTypes">image/jpeg,image/bmp,image/gif,image/jpeg</param>
    		 	<param name="maximumSize">71680</param>
    		 </interceptor-ref>
    		 <interceptor-ref name="defaultStack"/>
    		<result>/succ.jsp</result>
    		<result name="input">upload.jsp</result>
    	</action>

     succ.jsp
 <body>
 	上传成功!
 	文件标题:<s:property value="title"/><br/>
 	文件为: <IMG src="<s:property value="'upload/'+uploadFileName"/>"/><br/>
  </body>


2.文件下载

  download.jsp
<body>
    <a href="download.action">下载</a>
  </body>

   DownloadAction.java
package com.cs.struts2.helloworld;

import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class DownloadAction extends ActionSupport {

	private String inputPath;

	public void setInputPath(String inputPath) {
		this.inputPath = inputPath;
	}
	
	public InputStream getTargetFile() throws Exception{
		return ServletActionContext.getServletContext()
		                .getResourceAsStream(inputPath);
	}
	
	@Override
	public String execute() throws Exception {
		ActionContext act = ActionContext.getContext();
		String user = (String)act.getSession().get("user");
		if(user!=null&&user.equals("cs")) {
			return SUCCESS;
		}
		act.put("tip", "您还没有登陆,请登录后再操作!");
		return INPUT;
	}
}

stuts.xml
<action name="download" class="com.cs.struts2.helloworld.DownloadAction">
    		<param name="inputPath">/upload/Sunset.jpg</param>
    		<result name="success" type="stream">
    			<param name="contentType">image/jpg</param>
    			<param name="inputName">targetFile</param>
    			<param name="contentDisposition">filename="cc.jpg"</param>
    			<param name="bufferSize">102400</param>
    		</result>
    		<result name="input">login.jsp</result>
    	</action>
分享到:
评论

相关推荐

    struts2文件上传和下载

    在Struts2中,文件上传和下载是常见的功能需求,对于用户交互和数据交换至关重要。以下是对这些知识点的详细阐述: 1. **文件上传**: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它是一个Apache提供...

    struts2文件上传下载源代码

    在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...

    struts2文件上传和下载精细讲解

    总的来说,Struts2的文件上传和下载功能通过集成Apache Commons FileUpload库,大大简化了开发者的工作,提供了友好的API和配置选项,使得处理文件上传和下载变得轻而易举。开发者只需要关注业务逻辑,无需过多关注...

    struts2 文件上传和下载

    在Struts2中,文件上传和下载是常见的功能,对于用户交互和数据交换至关重要。以下是对这一主题的详细阐述。 1. **文件上传** - **MultipartResolver**: 在处理文件上传时,Struts2首先需要一个MultipartResolver...

    struts2 文件上传和下载示例程序

    在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户通过表单提交的文件,例如图片、文档等。这个“Struts2 文件上传和下载示例程序”是一个演示如何在Struts2中实现这两个功能的实例。 文件上传是Web...

    Struts2文件上传和下载教程

    ### Struts2文件上传与下载教程 #### 一、文件上传原理及实现 ...以上步骤详细介绍了如何利用Struts2框架实现文件的上传和下载功能。这些技巧不仅提高了系统的可用性和安全性,还增强了用户体验。

    struts2实现文件上传下载

    Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java ...以上就是使用Struts2框架实现文件上传下载的基本步骤和关键知识点。在实际开发中,可以根据项目需求进行调整和优化,确保功能的稳定性和安全性。

    struts2中的文件上传和下载示例

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括文件上传和下载。在Struts2中处理文件上传和下载是常见的需求,对于构建交互式的Web应用来说至关重要。以下将详细介绍Struts2中如何实现这两个...

    Struts2多文件上传下载实例

    在实际项目中,文件上传和下载功能是必不可少的,本实例将详细讲解如何在Struts2框架下实现单个文件及多个文件的上传与下载。 首先,我们需要在Struts2的配置文件(struts.xml)中添加相关的Action配置,以便处理文件...

    struts2文件上传下载

    在这个特定的项目中,我们关注的是"struts2文件上传下载"的功能,这涉及到用户通过Web界面上传文件到服务器,以及从服务器下载文件到用户的设备。 文件上传是Web应用中的常见需求,例如用户可能需要提交图片、文档...

    struts2文件上传与下载

    在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户在Web表单中提交的文件,如图片、文档等。下面将详细介绍Struts2中文件上传和下载的实现方法。 ### 1. 文件上传 #### 1.1 配置Struts2 首先,我们...

    Struts2文件上传与下载

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括处理用户表单提交、进行文件上传和下载。在Web应用中,文件上传和下载是常见的需求,例如用户上传头像、下载文档等。Struts2通过其Action类和...

    Struts2文件的上传和下载

    以下将详细介绍Struts2框架下如何进行文件的上传和下载。 首先,理解文件上传的基本原理至关重要。当在HTML表单中包含文件上传字段时,需要将表单的`enctype`属性设置为`multipart/form-data`。这是因为在默认的`...

    struts2 文件的上传和下载

    Struts2是一个流行的Java web框架,它为开发者提供了一种优雅的方式来构建动态、结构化的Web...希望本文能为你提供关于Struts2文件上传和下载的基本指导,进一步学习可参考给定的博文链接或其他相关文档和示例代码。

    struts实现文件上传和下载源代码

    例如,Struts 1和Struts 2在处理文件上传和下载的方式上有显著区别,Struts 2引入了更多面向Action的API和拦截器机制。 5. **源代码分析** 在提供的压缩包文件`upload`中,可能包含了Action类、Struts配置文件、...

    Struts2文件上传下载和表单重复提交问题

    综上所述,Struts2文件上传下载和表单重复提交涉及多个技术点,包括Struts2的配置、文件操作、HTTP响应头设置、安全性和异常处理。理解并熟练掌握这些知识点,对于构建健壮的Web应用程序至关重要。

Global site tag (gtag.js) - Google Analytics