`

利用struts实现文件上传和下载

阅读更多

在配置文件struts.xml中:

 

<!-- 文件上传 -->
		<action name="file" class="com.kaishengit.action.FileAction">
			<result>/WEB-INF/views/upload.jsp</result>
		</action>
		<action name="upload" class="com.kaishengit.action.FileAction" method="upload">
			<result type="redirectAction">
				<param name="actionName">file</param>
			</result>
		</action>
		
		<!-- 文件下载 -->
		<action name="download" class="com.kaishengit.action.DownloadAction">
			<result type="stream">
				<param name="contentType">${type}</param>// 文件类型
				<param name="contentLength">${length}</param>//文件大小
				<param name="contentDisposition">attachment;filename="${fileName}"</param>//文件名
				<param name="inputName">file</param>//在接受的action中必须要有对应的方法;
				<param name="bufferSize">1024</param>//缓存区大小
				<param name="allowCaching">true</param>// 是否需要缓存
				<param name="contentCharSet">UTF-8</param>
			</result>
		</action>

 

 

在action中,这里我写的是多个文件上传的;

 

上传的FileAction

 

 

package com.kaishengit.action;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.List;

import com.opensymphony.xwork2.Action;

public class FileAction {

	private String fileDesc;
	private File[] documents;//这里的documents必须跟jsp中文件file类型的name属性一样;
	private String[] documentsFileName;//文件名必须以FileName结尾;这是java中的约定;
	private List<String> documentsContentType;
	
	public String execute() {
		return Action.SUCCESS;
	}
	
	public String upload() throws Exception {
		for(int i = 0;i < documents.length;i++) {
			File document  = documents[i];
			
			System.out.println("------------------------------------------");
			System.out.println("FileName :" + documentsFileName[i]);
			System.out.println("documentContentType:" + documentsContentType.get(i));
			System.out.println(document.getName());
			System.out.println(document.length());
			System.out.println("------------------------------------------");
			
			BufferedInputStream bis = new BufferedInputStream(new FileInputStream(document));
			BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:/upload/"+documentsFileName[i]));
			
			byte[] buffer = new byte[1024];
			int len = -1;
			while((len = bis.read(buffer)) != -1) {
				bos.write(buffer, 0, len);
			}
			
			bos.flush();
			bos.close();
			bis.close();
		}
		
		
		return Action.SUCCESS;
	}


	public String getFileDesc() {
		return fileDesc;
	}


	public void setFileDesc(String fileDesc) {
		this.fileDesc = fileDesc;
	}


	public File[] getDocuments() {
		return documents;
	}


	public void setDocuments(File[] documents) {
		this.documents = documents;
	}


	public String[] getDocumentsFileName() {
		return documentsFileName;
	}


	public void setDocumentsFileName(String[] documentsFileName) {
		this.documentsFileName = documentsFileName;
	}


	public List<String> getDocumentsContentType() {
		return documentsContentType;
	}


	public void setDocumentsContentType(List<String> documentsContentType) {
		this.documentsContentType = documentsContentType;
	}
	
}

 

 

下载的action:

 

package com.kaishengit.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import com.opensymphony.xwork2.Action;

public class DownloadAction {

	private String type;
	private long length;
	private String fileName;
	
	public String execute() {
		return Action.SUCCESS;
	}
	
	public InputStream getFile() throws Exception {
		type = "application/pdf";
		fileName = new String("简历.pdf".getBytes("UTF-8"),"ISO8859-1");
		
		File file = new File("C:/upload/123.pdf");
		InputStream input = new FileInputStream(file);
		length = file.length();
		
		return input;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public long getLength() {
		return length;
	}

	public void setLength(long length) {
		this.length = length;
	}

	public String getFileName() {
		return fileName;
	}

	public void setFileName(String fileName) {
		this.fileName = fileName;
	}
	
	
}

 

上传和下载的jsp

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'upload.jsp' starting page</title>
  </head>
  
  <body>
    
    <form action="upload.action" method="post" enctype="multipart/form-data">
    	文件的描述:<input type="text" name="fileDesc"/><br/>
    	<input type="file" name="documents"/><br/>
    	<input type="file" name="documents"/><br/>
    	<input type="submit" value="上传"/>
    </form>

    <a href="download.action">点击下载</a>
    <br/>

  </body>
</html>
 
分享到:
评论

相关推荐

    struts与hibernate实现文件的上传与动态下载

    本篇文章将详细讲解如何利用Struts2.2和Hibernate3.6实现文件的上传与动态下载。 **一、文件上传** 1. **环境配置**:首先,你需要一个集成开发环境,例如MyEclipse8.6,并安装所需的Struts2.21、JUnit4.8.2以及...

    Struts2实现文件上传

    在这个“Struts2实现文件上传”的主题中,我们将深入探讨如何利用Struts2框架来实现在Web应用中的文件上传功能。 首先,我们注意到一个细节描述:“private String uploadContextType;应更正为private String ...

    eclipse下利用struts2实现文件的上传和下载

    在Eclipse环境中,使用Struts2框架实现文件的上传和下载是常见的Web开发任务。Struts2是一个强大的MVC框架,提供了丰富的功能来处理用户请求和响应,包括文件操作。以下是一个详细的步骤和知识点解析: 1. **Struts...

    用struts1实现文件的上传和下载

    在这个项目中,我们将探讨如何利用Struts1来实现文件的上传和下载功能。 首先,我们需要理解文件上传的基本流程。在Web应用中,用户通过表单提交包含文件的POST请求到服务器。Struts1框架接收到这个请求后,会使用`...

    struts文件上传和下载

    在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户通过表单提交的文件,或者允许用户从服务器下载文件。这些功能极大地增强了Web应用的交互性和实用性。 在Struts2中实现文件上传,主要涉及到以下几...

    struts2 文件的上传和下载

    在实现过程中,可以利用Struts2提供的`StrutsResult`来简化文件下载的处理,例如使用`stream`结果类型,它可以自动处理文件流的读取和发送。 最后,`UpAndDownLoad.zip`可能包含了示例代码、配置文件和其他相关资源...

    struts 实现文件上传与下载

    - 在处理文件上传下载时,需要对可能出现的各种异常(如文件不存在、磁盘空间不足等)进行妥善处理。 4. **国际化支持**: - 如果应用需要支持多种语言环境,则需要考虑如何正确处理不同编码下的文件名。 综上所...

    Struts2文件上传和下载教程

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

    struts+hibernate实现文件上传、下载,以二进制存于数据库

    总结起来,这个项目通过`uploadify`实现文件上传,利用Struts处理请求,结合Hibernate将文件以二进制形式存入数据库,再通过EasyUI创建用户友好的界面进行文件下载。整个流程涉及了前端交互、后端处理、数据库操作...

    struts1实现文件上传

    综上所述,Struts1中的文件上传功能实现涉及到多个核心组件和技术点的综合运用。开发者需要对Struts1框架有深入的理解,并熟练掌握相关API的使用方法。此外,在实际开发过程中还需要注意安全性问题,比如防止恶意...

    Struts2全注解方式实现文件上传与下载

    在本资源中,我们将探讨如何利用Struts2的注解方式来实现文件的上传和下载功能,这对于任何Web应用来说都是至关重要的特性。 首先,我们来看“注解”在Struts2中的作用。Struts2允许开发者使用注解来配置Action类,...

    struts实现文件上传

    通过以上步骤,我们就能够利用Struts框架实现文件上传功能。在实际项目中,可能会根据需求进行更多的定制,例如使用数据库存储文件信息,或者使用云存储服务等。同时,随着技术的发展,现在的Web框架如Spring MVC也...

    swfuplaod+struts2实现多文件上传

    下面将详细介绍如何利用SWFUpload与Struts2来实现多文件上传。 **一、SWFUpload组件介绍** SWFUpload 是一个JavaScript库,它利用Flash技术提供了一个高级的文件上传体验。它的主要特性包括: 1. **多文件选择**...

    Struts1实现文件上传源码

    在这个“Struts1实现文件上传源码”实例中,我们将深入探讨如何利用Struts1框架来处理文件上传操作。 在Web应用中,文件上传功能是非常常见的,比如用户上传头像、提交文档等。Struts1提供了ActionForm类和一系列...

    struts2多文件上传和下载

    这篇内容将深入讲解如何在Struts2中实现多文件的上传和下载。 1. **文件上传** 文件上传在Web应用中常常用于让用户提交各种类型的文件,如图片、文档等。在Struts2中,我们可以利用`Commons FileUpload`库来处理...

    struts2实现的文件上传下载,上传文件重命名(按时间戳)

    在本项目中,我们关注的是如何利用Struts2实现文件上传并重命名(按时间戳),以及如何进行文件下载。 一、Struts2文件上传 在Struts2中,文件上传主要依赖于`org.apache.struts2.dispatcher.multipart....

    Struts+Spring+Hibernate实现上传下载.

    总的来说,Struts、Spring和Hibernate的结合使用,能够提供一个完整的解决方案,从用户界面交互、业务逻辑处理到数据持久化,覆盖了文件上传下载的整个流程。开发者可以根据具体需求进行配置和扩展,以实现更复杂的...

    java+struts+swfupload文件上传下载

    要实现"java+struts+swfupload文件上传下载",你需要完成以下步骤: 1. **集成SwfUpload**:在前端页面引入SwfUpload的JavaScript库,配置相关参数如上传URL、文件类型限制等,实现文件选择和上传触发事件。 2. **...

    利用STRUTS2实现上传

    利用struts2实现文件上传,这里面有批量上传,和单一文件上传,功能实现很简单,但是必须先下载STRUTS2的jar包,以及在前台传入数据时候注意我的form表单,用sturts2上传必须改变form表单

    struts框架写的文件上传下载系统

    在本系统中,"struts框架写的文件上传下载系统"是利用Struts框架来实现文件的上传和下载功能,提供了一个平台让用户能够注册成为会员后进行文件操作。 首先,让我们深入理解Struts框架的核心概念: 1. **模型...

Global site tag (gtag.js) - Google Analytics