码迷,mamicode.com
首页 > Web开发 > 详细

struts2 文件上传

时间:2014-12-04 11:55:23      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   使用   sp   

网上有很多多文件上传的资料,我只记录需要注意的一点:

jsp页面:

<div>
<font size="10">文件上传</font>
<form action="FileUp" method="post" enctype="multipart/form-data">
<s:file name="upload" size="20"></s:file>
<input type="submit" value="上传">
</form>    
</div>

 

s标签中file的name为upload,那么action中的bean属性就是upload

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

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

//需要commons-io包和commons-fileupload包

private File upload;//文件名
private String uploadFileName;//设置上传文件的文件名    注意命名规范 "upload"+"FileName"
private String uploadContentType;//上传文件的类型    注意命名规范 "upload"+"ContentType"

//然后就是执行方法了:

public String execute() throws Exception {
//System.out.println(upload.getName());
//System.out.println(uploadFileName);
//System.out.println(uploadContentType);
if(upload!=null&&upload.getName()!=null&&!"".equals(upload.getName())){
String savePath = "uploads";//上传到服务器的哪个文件夹下,这个也可以在xml文件中配置
String realPath = ServletActionContext.getServletContext().getRealPath("/");
savePath = realPath + savePath +"/"+DateUtils.dateFormat(new Date(), "yyyyMMddhhmmss")+ uploadFileName;
File saveFile = new File(savePath);
if(saveFile.getParentFile()!=null&&!saveFile.getParentFile().exists()){
saveFile.getParentFile().mkdirs();//如果父目录不存在则创建
}
FileUtils.copyFile(upload, saveFile);
this.httpReq.setAttribute("uploadMessage", "上传成功!");//不要写upload.message 会把message当做属性
return "SUCCESS";
}
return "UpFailure";
}

 

只要action中属性名对了基本上就能接收到上传的文件名,当然不要忘了get,set方法

多文件上传:

<div>
<font size="10">文件上传</font>
<form action="FilesUp" method="post" enctype="multipart/form-data">
<s:file name="file" size="20"></s:file><br>
<s:file name="file" size="20"></s:file><br>
<s:file name="file" size="20"></s:file><br>
<input type="submit" value="上传">
</form>    
</div>

private List<File> file;
private List<String> fileFileName;
private List<String> fileContentType;


@Override
public String execute() throws Exception {
if(file!=null){
if(file.size()==0){
this.log.info("空文件上传!");
}else{
List<String> filesName = new ArrayList<String>();
for (int i=0;i<file.size();i++) {
if(file.get(i)!=null&&file.get(i).getName()!=null&&!"".equals(file.get(i).getName())){
File saveFile = new File(ServletActionContext.getServletContext().getRealPath("/")+"uploads"+"/"+fileFileName.get(i));
FileUtils.copyFile(file.get(i), saveFile);
filesName.add(fileFileName.get(i));
}else{
this.log.info("第"+i+"个文件为空,无法上传!");
}
}
this.httpReq.setAttribute("upFileMessage", filesName);
return "SUCCESS";
}
}

return "re";
}

 

最后配置文件:

<!-- 指定允许上传的文件最大字节数。默认值是2097152(2M) -->
<constant name="struts.multipart.maxSize" value="10701096"/>
<!-- 设置上传文件的临时文件夹,默认使用javax.servlet.context.tempdir  文件上传时使用-->
<constant name="struts.multipart.saveDir " value="/tmp" />

推荐内容:Struts2文件上传原理及示例
http://blog.sina.com.cn/s/blog_87720b870100zkn2.html

 

struts2 文件上传

标签:style   blog   http   io   ar   color   os   使用   sp   

原文地址:http://www.cnblogs.com/Seands/p/4142273.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!