现在的位置: 首页 > 综合 > 正文

Struts文件上传下载

2018年04月24日 ⁄ 综合 ⁄ 共 4068字 ⁄ 字号 评论关闭

一.Struts文件上传:

  添加相关jar包

1.UploadAction:

package com.lzh.lms.web.struts.action.file;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

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

import com.lzh.lms.util.StringUtil;
import com.opensymphony.xwork2.ActionSupport;

/**
 * 档案上传
 * 
 * @author luozehua
 * @date 2014年3月20日
 * @time 下午3:45:36
 */
@SuppressWarnings("serial")
public class UploadAction extends ActionSupport {
	private File file;
	private String fileFileName;
	private String fileContentType;
	private String allowedTypes;

	public String getAllowedTypes() {
		return allowedTypes;
	}

	public void setAllowedTypes(String allowedTypes) {
		this.allowedTypes = allowedTypes;
	}

	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;
	}

	@Override
	public String execute() throws Exception {
		String uploadPath = ServletActionContext.getServletContext().getRealPath("/files");
		File file = new File(uploadPath);
		if (!file.exists()) {
			file.mkdirs();
		}
		// 上传文件后,文件名后面加上当前世间,避免重复导致覆盖文件
		Date date = new Date();
		SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
		String newPrefix = StringUtil.getStringExceptFileSuffix(this.fileFileName).concat(format.format(date));
		String suffix = StringUtil.getFileSuffix(this.fileFileName);
		String newFileName = newPrefix.concat(".").concat(suffix);
		FileUtils.copyFile(this.file, new File(file, newFileName));
		return "upload_success";
	}

}

2.jsp

<h2>上传你的档案</h2>
	<form action="${pageContext.request.contextPath }/file/upload.action" method="post" enctype="multipart/form-data">
		文件:<input type="file" name="file"><font color="red" size="2">*上传文件不得超过10M,格式必须是我doc或docx!</font><br>
		<input type="submit" value="上传">
	</form>

3.struts配置文件

<constant name="struts.multipart.saveDir" value="d:/temp" />
	<constant name="struts.multipart.maxSize" value="6291456" />

	<package name="file" extends="struts-default" namespace="/file">
		<action name="upload" class="uploadAction">
			<interceptor-ref name="fileUpload">
				<param name="allowedTypes">
					application/vnd.ms-doc,application/octet-stream
				</param>
			</interceptor-ref>
			<interceptor-ref name="defaultStack"/>
			<result name="upload_success">/jsp/file/upload_success.jsp</result>
			<result name="input">/jsp/file/upload_failure.jsp</result>
		</action>
	</package>

一.struts 文件下载

1.DownloadAction

package com.lzh.lms.web.struts.action.file;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

/**
 * @author luozehua
 * @date 2014年3月23日
 * @time 下午8:44:53
 */
@SuppressWarnings("serial")
public class DownloadAction extends ActionSupport {
	private String fileName;

	public String getFileName() throws UnsupportedEncodingException {
		this.fileName = new String(this.fileName.getBytes(), "ISO-8859-1");
		return fileName;
	}

	public void setFileName() throws UnsupportedEncodingException {
		String name = ServletActionContext.getRequest().getParameter("fileName");
		name = new String(name.getBytes("iso-8859-1"), "UTF-8");
		this.fileName = name;
	}

	public InputStream getInputStream() throws UnsupportedEncodingException {
		FileInputStream in = null;
		this.setFileName();
		String filePath = ServletActionContext.getServletContext().getRealPath("/download");

		try {
			String result = URLDecoder.decode(this.fileName, "GBK");
			in = new FileInputStream(new File(filePath, result));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		return in;
	}

	@Override
	public String execute() throws Exception {
		return super.execute();
	}
	
	
}

2.jsp

<h2>下载档案模版</h2>
	<a href="${pageContext.request.contextPath }/file/download.action?fileName=个人档案模板.doc">档案模版</a>
	<hr />

3.struts 配置文件

<package name="download" extends="struts-default" namespace="/file">
		<action name="download" class="downloadAction">
			<result type="stream">
				<param name="inputName">inputStream</param>
				<param name="contentDisposition">attachment;filename=${fileName}</param>
			</result>
		</action>
	</package>
【上篇】
【下篇】

抱歉!评论已关闭.