struts2实现文件的上传和下载

文件的上传和下载需要两个jar包  commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar

JSP页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>EYang</title>

<script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
	$(function() {

	});
</script>
</head>
<body>
	<form action="file/fileUp.action" method="post" enctype="multipart/form-data">
		<input type="file" name="file">
		<input type="submit" value="上传">
	</form>
        <form action="file/fileLoad.action" method="post">
		<input type="submit" value="下载">
	</form>
</body>
</html>

struts.xml配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

	<!-- value为false时、关闭动态方法调用 <constant name="struts.enable.DynamicMethodInvocation"
		value="false" /> 开发模式 <constant name="struts.devMode" value="false" /> <package
		name="default" namespace="/" extends="struts-default"> <default-action-ref
		name="index" /> <global-results> <result name="error">/error.jsp</result>
		</global-results> <global-exception-mappings> <exception-mapping exception="java.lang.Exception"
		result="error"/> </global-exception-mappings> <action name="index"> <result
		type="redirectAction"> <param name="actionName">HelloWorld</param> <param
		name="namespace">/example</param> </result> </action> </package> 可以添加外部的xml文件
		<include file="example.xml"/> -->
	<!-- Add packages here -->
	<constant name="struts.multipart.saveDir" value="/tmp" />
	<!-- 指定国际化资源文件的baseName为uploadFile -->
	<constant name="struts.custom.i18n.resources" value="uploadFile"></constant>
	<!-- 设置该应用使用的编码集为utf-8 -->
	<constant name="struts.i18n.encoding" value="utf-8"></constant>
	<package name="eyang" namespace="/file" extends="struts-default">

		<!-- 全局拦截器配置 <interceptors> <interceptor name="loginInterceptor" class="com.eyang.interceptor.LoginInterceptor"></interceptor>
			<interceptor-stack name="myInterceptor"> <interceptor-ref name="defaultStack"></interceptor-ref>
			<interceptor-ref name="loginInterceptor"></interceptor-ref> </interceptor-stack>
			</interceptors> <default-interceptor-ref name="myInterceptor"></default-interceptor-ref> -->

		<!-- <interceptors> <interceptor name="loginInterceptor" class="com.eyang.interceptor.LoginInterceptor"></interceptor>
			<interceptor name="SessionInterceptor" class="com.eyang.interceptor.SessionInterceptor"></interceptor>
			</interceptors> <action name="login" class="com.eyang.action.LoginAction"
			method="login"> <result >/success.jsp</result> 单个action需要执行的拦截器 <interceptor-ref
			name="SessionInterceptor"></interceptor-ref> <interceptor-ref name="loginInterceptor"></interceptor-ref>
			<interceptor-ref name="defaultStack"></interceptor-ref> </action> -->

		<action name="fileUp" class="com.eyang.action.FileUpAction" method="fileUp">
			<result>/fileList.jsp</result>
		</action>

		<action name="fileLoad" class="com.eyang.action.FileLoadAction" method="fileLoad">

			<!-- 配置结果类型为stream的结果 -->
			<result name="success" type="stream">
				<!-- 指定下载文件的类型 -->
				<param name="contentType">image/jpg</param>
				<!-- 指定下载文件的方法名 -->
				<param name="inputName">downloadFile</param>
				<param name="contentDisposition">attachement;filename="struts.jpg"</param>

				<!-- 指定下载文件的缓冲大小 -->
				<param name="bufferSize">50000000</param>
			</result>
		</action>
	</package>

</struts>

文件上传Action

package com.eyang.action;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class FileUpAction extends ActionSupport {

	/**
	 *
	 */
	private static final long serialVersionUID = 1L;
	private File file;

	/**
	 * @return String
	 * @throws IOException
	 */
	public String fileUp() throws IOException {
		String realpath = ServletActionContext.getServletContext().getRealPath("/file");
		// D:\Office\eclipse-jee-kepler-SR2-win32\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\EYang_Template\file
		System.out.println("realpath: " + realpath);
		if (file != null) {
			File savefile = new File(new File(realpath), "001.jpg");
			if (!savefile.getParentFile().exists())
				savefile.getParentFile().mkdirs();
			FileUtils.copyFile(file, savefile);
		}
		return SUCCESS;
	}

	public File getFile() {
		return file;
	}

	public void setFile(File file) {
		this.file = file;
	}
}

文件下载Action

package com.eyang.action;

import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class FileLoadAction extends ActionSupport {

	/**
	 *
	 */
	private static final long serialVersionUID = 1L;

	public String fileLoad() {
		return SUCCESS;
	}

	public InputStream getDownloadFile() throws Exception {
		InputStream in = ServletActionContext.getServletContext().getResourceAsStream("/img/qianyesong.jpg");
		return in;
	}
}

  

时间: 2024-12-29 11:02:26

struts2实现文件的上传和下载的相关文章

Struts2控制文件的上传与下载

Struts2控制文件上传与下载的几个注意事项: (1)必须将表单的method设置为post,将enctype设置为multipart/from-data.只有这样,浏览器才会把用户选择文件的二进制数据发送给数据. (2)Struts2默认使用的是Jakarta的Common-FileUpload的文件上传框架,因此,如果需要使用Struts2的文件上传功能,则需要在web应用中增加两个JAR文件,即commons-io-2.2.jar和commons-fileupload-1.3.1.jar

基于struts2实现文件的上传和下载;

前台from表单: <form action="dd.action" method="post"enctype="multipart/form-data"> </form> 表单在提交数据的时候以二进制流的形势向服务器提交数据: struts2在原有的上传解析器继承上做了进一步封装,更近一步简化了文件上传; struts2默认使用的是Jakarta和Common-FileUpload的文件上传框架,因此,如果需要shiyo

struts2实现文件的上传和下载实例[转]

实现原理 Struts 2是通过Commons FileUpload文件上传. Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中.从而我们就能够以本地文件方式的操作浏览器上传的文件 具体实现: 一.创建index.jsp页面 1 <body> 2 <s:form action="upload" method="post" theme="

Struts2实现文件的上传与动态下载功能。

本篇主要使用Struts2实现文件的上传与动态下载功能.出于安全考虑,所以,在硬盘上存储上传的文件的时候,统一都重新命名为随机字符串.用数据库存储真实文件名与随机文件名称之间的关联. 下面的是实体类 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public class FileBag implements java.io.Serializable {     // Fields     private Integer id;   //Id编号     privat

使用Loadrunner进行文件的上传和下载

最近使用loadrunner中需要录制文件的上传和下载,上传功能模块利用录制可以直接实现,下载无法实现,在网上找到了一段代码,自己动手试验了下,发现没有用 辛苦找到的,还是记录下吧 (1)LoadRunner上传文件 web_submit_data("importStudent.do", "Action=https://testserver/console/importStudent.do", "Method=POST", "EncTy

【Linux命令】--(4)文件打包上传和下载

文件打包上传和下载 +++++++++++++++++++++++++++++++用SecureCRT来上传和下载文件tar命令gzip命令+++++++++++++++++++++++++++++++先把计划放着,待老夫国庆把它学完!

【php】文件的上传与下载

一. 生活中常见的地方: a) 例如邮箱.空间.文库.百度云.微爱等地方,都可以看到文件的上传和下载的应用,因此,上传和下载的功能非常重要!二. PHP当中的文件上传和下载 a) 我们需要进行一些设置,来使我们的表单具有提交文件的功能! b) 客户端的设置: i. 其实就是表单的设置: 1. input表单项中的type属性值必须是file类型 2. form表单头部需要添加一个通行证:enctype="multipart/form-data",含义为让服务器认识到我们要在这个表单中上

SpringMVC实现文件的上传和下载

前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:"用什么技术来实现一般网页上文件的上传和下载?是框架还是Java中的IO流".我回复他说:"使用SpringMVC框架可以做到这一点,因为SpringMVC为文件的上传提供了直接的支持,但需要依赖Apache提供Commons FileUpload组件jar包."鉴于这个问题,我上网也百度了一下,网上很多都是介绍的使用IO流来实现文件的上传和下载,也有说到框架的,但介绍的并不是很完整,今天小钱将和大家介绍使用Spr

SecureCRT使用sz和rz命令进行文件的上传和下载

SecureCRT可以使用sz和rz命令进行文件的上传和下载. sz文件下载: 格式:sz 文件名称 即可将服务器的文件下载至本地. rz文件上传: 格式:rz 文件名称 即可将本地文件上传至服务器. 本地文件夹可以通过Options-->Session Options中进行设置.