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