struts2 实现文件上传下载 (下载支持中文文件名)代码

struts2 实现文件上传:

Action 代码:

package com.action;

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

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class FileUploadAction extends BaseAction{

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

	/**
	 * 上传后存放在临时文件夹里的文件
	 */
	private File <span style="color:#ff0000;">file;</span>

	/**
	 * 文件名称
	 */
	private String <span style="color:#ff0000;">fileFileName</span>;

	/**
	 * 文件的MIME类型
	 */
	private String<span style="color:#ff0000;"> fileContentType</span>;

	/**
	 * 保存的路径
	 */
	private String savePath;

	public String getSavePath() {
		return savePath;
	}

	public void setSavePath(String savePath) {
		this.savePath = savePath;
	}

	public File getFile() {
		return file;
	}

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

	public String getFileFileName() {
		return fileFileName;
	}

	public void setFileFileName(String fileFileName) {
		this.fileFileName = fileFileName;
	}

	public String getFileContentType() {
		return fileContentType;
	}

	public void setFileContentType(String fileContentType) {
		this.fileContentType = fileContentType;
	}

	public String execute() throws Exception
	{

		 String root = ServletActionContext.getServletContext().getRealPath(savePath);

	        InputStream is = new FileInputStream(file);

	        OutputStream os = new FileOutputStream(new File(root, fileFileName));

	        byte[] buffer = new byte[500];
	        @SuppressWarnings("unused")
			int length = 0;

	        while(-1 != (length = is.read(buffer, 0, buffer.length)))
	        {
	            os.write(buffer);
	        }

	        os.close();
	        is.close();

	        return SUCCESS;

	}

}

struts2.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>

	<package name="fileUpload" extends="struts-default" namespace="/">

		<action name="fileUpload_*" class="com.action.FileUploadAction" method="{1}">

          <param name="savePath">/upload</param> //注意在当前工程里建一个 upload文件夹

		<result>
			/login.jsp
		</result>

		 </action>

	</package>
</struts>

文件上传的 jsp 页面:

	<form action="fileUpload.action" method="post" enctype="multipart/form-data">
        file: <input type="file" name="file"/><br>
        <input type="submit" value="submit"/>
    </form>

struts2实现文件下载源码:支持中文文件名

注意:下载文件的大小设置问题,默认是2M. 可以在struts.properties 设置  struts.multipart.maxSize=10485760 (10M 大小根据自己情况)

action 的代码:

package com.action;

import java.io.IOException;
import java.io.InputStream;
import org.apache.struts2.ServletActionContext;

public class FileDownloadAction extends BaseAction{

	/**
	 *
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * 文件名称
	 */
	private String fileName;

	public String getFileName() throws IOException {

		<span style="color:#ff0000;">return  new String(fileName.getBytes(), "ISO8859-1"); //转码 使其支持中文,不然无法显示文件名的中文字符</span>
	}

		public void setFileName(String fileName) {

				this.fileName = fileName;;

		}

		 public InputStream getInputStream() throws Exception{

			 return ServletActionContext.getServletContext().getResourceAsStream( fileName);

			   }

			    public String execute()throws Exception{
					return SUCCESS;
				}
}

下载的 struts2.xml配置信息:

<action name="download" class="com.action.FileDownloadAction">

			<result type="stream" name="success">
				<param name="contentDisposition">attachment;fileName="${fileName}"</param>
				<param name="contentType">application/octet-stream;charset=ISO8859-1</param>
				<param name="inputName"><span style="color:#ff0000;">InputStream</span></param> //InputStream 是有Action中的<span style="font-family: Arial; font-size: 14px; line-height: 26px;">getInputStream()方法 去掉get而定的,要一致</span>
				<param name="bufferSize">10485760</param>//文件大小(10M)
			</result>

	</action>

jsp页面:

<a href="download.action?fileName=upload/铭记11er.mp3">点击下载</a>
时间: 2024-10-25 15:26:32

struts2 实现文件上传下载 (下载支持中文文件名)代码的相关文章

struts2实现文件上传和下载

在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来比较繁琐,而且不灵活,在学习了struts2后,struts2为文件上传下载提供了更好的实现机制,在这里我分别就单文件上传和多文件上传的源代码进行一下讲解,这里需要导入文件下载上传的两个jar文件,一个是commons-fileupload-1.2.2.jar,另一个是commons-io-2.0.

struts2(六) 文件上传和下载

前面对文件下载提过一点点,这里正好要讲文件上传,就放在一起在说一遍. --WH 一.单文件上传 在没学struts2之前,我们要写文件上传,非常麻烦,需要手动一步步去获取表单中的各种属性,然后在进行相应的处理,而在struts2中就不需要了,因为有一个fileUpload拦截器帮我们全做完了.我们只需要添加一点点信息,就可以完成上传的功能. 1.Action中需要提供三个属性 File fieldName: //文件表单项名称,也就是上传控件所填写的name属性名 String fileCont

7、Struts2实现文件上传和下载

一.实现单个文件上传 1.创建如下web项目结构 2.在src下的com.action包下创建UploadAction.java 1 package com.action; 2 import java.io.File; 3 4 import javax.servlet.ServletContext; 5 6 import org.apache.commons.io.FileUtils; 7 import org.apache.struts2.ServletActionContext; 8 9 i

Struts2入门(七)——Struts2的文件上传和下载

一.前言 在之前的随笔之中,我们已经了解Java通过上传组件来实现上传和下载,这次我们来了解Struts2的上传和下载. 注意:文件上传时,我们需要将表单提交方式设置为"POST"方式,并且将enctype属性设置为"multipart/form-data",该属性的默认值为"application/x-www-form-urlencoded",就是说,表单要写成以下这种形式: <form action="" metho

Struts2 实现文件上传和下载

实现上传功能 1.首先你应该有一个上传页面 <!-- file的name属性与action中的File类型属性保持一致,用于封装File控件对应的文件内容 --> <s:file name="upload" label="选择文件"></s:file> 2.然后创建一个文件上传的XXXaction public class UploadAction extends ActionSupport implements ModelDri

struts2中的文件上传和下载

天下大事,必做于细.天下难事,必作于易. 曾经见过某些人,基础的知识还不扎实就去学习更难的事,这样必然在学习新的知识会很迷惑结果 再回来重新学习一下没有搞懂的知识,这必然会导致学习效率的下降!我写的这篇上传和下载都很基础. 十分适合初学者! jsp:页面 <!--在进行文件上传时,表单提交方式一定要是post的方式,因为文件上传时二进制文件可能会很大,还有就是enctype属性,这个属性一定要写成multipart/form-data, 不然就会以二进制文本上传到服务器端--> <for

Struts2文件上传与下载

一,页面 index.html 在页面中最重要的就是这个文件上传用的 form 表单,注意这里一定要把 form 的encyType属性明确标定为“multipart/form-data”,只有这样.表单才可能以二进制的形式上传到服务器. <form action = "<%=contextPath%>/file/uploadImage.action" encytype="multipart/form-data"> <input typ

Struts2学习总结——文件上传与下载

Struts2文件上传与下载 1.1.1新建一个Maven项目(demo02) 在此添加Web构面以及 struts2 构面 1.2.1配置Maven依赖(pom.xml 文件) <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20

Struts2学习(八)—文件上传和下载

在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来比较繁琐,而且不灵活,在学习了struts2后,struts2为文件上传下载提供了更好的实现机制,在这里我分别就单文件上传和多文件上传的实现进行一下讲解,这里 我们使用的struts2 web项目所导入的jar包中的**commons-fileupload-1.3.1.jar commons-io-