struts2文件的上传
1.struts文件上传
<constant name="struts.multipart.maxSize" value="52428800"></constant>
<action name="UploadAction_*" class="com.lanou3g.UploadAction" method="{1}">
<result name="success" type="redirect">/success.jsp</result>
</action>
创建Action类实现文件的上传
public class UploadAction extends ActionSupport{
private File[] file;
private String[] fileFileName;
public String upload() {
ServletContext application = ServletActionContext.getServletContext();
String realPath = application.getRealPath("/upload");
File f = new File(realPath);
if (!f.exists()) {
f.mkdir();
}
for (int i = 0; i < file.length; i++) {
File tempFile = file[i];
String tempFileName = fileFileName[i];
tempFile.renameTo(new File(realPath,tempFileName));
}
return SUCCESS;
}
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;
}
}
2.struts2文件下载
// 同样,也是首先在struts.xml配置文件中配置下载的Action类
<action name="DownloadAction_*" class="com.lanou3g.DownloadAction" method="{1}">
<result name="success" type="stream">
<param name="contentType">application/octet-stream</param>
<param name="contentDisposition">attachment;filename=${fileName}</param>
<param name="inputName">fileInputStream</param>
</result>
</action>
// 创建Action类实现下载
public class DownloadAction extends ActionSupport{
// 获取表单传过来的问文件名
// 这里会出现文件名的中文乱码问题
// 需要修改fileName的编码格式
private String fileName;
// 声明一个读取文件的字节流属性(把流创建出来 其他交给struts)
// 这个名字没有规范 但是你要告诉struts 你给它的是哪个流
private InputStream fileInputStream;
// 下载方法
public String download() throws FileNotFoundException {
/*
* 1.获取用户要下载的文件的真实路径
* 2.用这个路径初始化这个字节流
*/
ServletContext application = ServletActionContext.getServletContext();
String realPath = application.getRealPath("/upload/" + fileName);
fileInputStream = new FileInputStream(realPath);
return SUCCESS;
}
// 提供set/get方法
public String getFileName() {
// 修改编码格式 方法是给struts提供的
// 当系统调用是修改 编码格式
try {
fileName = new String(fileName.getBytes(), "iso-8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public InputStream getFileInputStream() {
return fileInputStream;
}
public void setFileInputStream(InputStream fileInputStream) {
this.fileInputStream = fileInputStream;
}
}