使用struts2实现文件上传并在上传过程中为文件重新命名

来源:互联网 发布:093b核潜艇相关数据 编辑:程序博客网 时间:2024/06/04 18:05
1.设置表单
在form标签中设置method="post" enctype="multipart/formdata"
2.编写Action
在Action中通过属性接收上传文件信息
3.配置fileUpload拦截器
设置文件长度和扩展名等限制
设置Action的input结果
4.编写message.properties
设置自定义错误提示信息

5.设置Struts常量,指定临时目录和资源文件等

关键代码:

<!-- 上传文件时保存临时文件的目录 -->
<constant name="struts.multipart.saveDir" value="D:\temp"/>
<!-- 上传文件请求的最大长度,不限制最大长度设置为-1 -->
<constant name="struts.multipart.maxSize" value="-1"/>
<!-- 设置资源文件 -->
<constant name="struts.custom.i18n.resources" value="message"/>
//需要先设置好对应的实体类

//更新图书
public class AddBookAction extends ActionSupport{

//接收编辑表单提交的数据
private Book book;
//接收上传的图片的临时文件(必须有的字段,字段名对应file元素的name属性)
private File upload;
//接收上传图片的原始文件名(字段名对应file元素的name属性+FileName)
private String uploadFileName;


@Override
public String execute() throws Exception {

//获得upload目录的绝对路径
ServletContext sc=ServletActionContext.getServletContext();
String uploadPath=sc.getRealPath("/upload");
//获得文件后缀
String extName=FilenameUtils.getExtension(uploadFileName);
//重新生成文件名
String newFileName=System.currentTimeMillis()+"."+extName;
//转存文件
FileUtils.copyFile(upload,new File(uploadPath+"/"+newFileName));

//将新文件名存入实体类
book.setPic(newFileName);

bookService.addBook(book);
return SUCCESS;
}

public Book getBook() {
return book;
}

//在填充表单数据的时候,Struts如果发现book是null,则会先创建一个Book对象通过set方法传入
public void setBook(Book book) {
this.book = book;
}


public File getUpload() {
return upload;
}


public void setUpload(File upload) {
this.upload = upload;
}


public String getUploadFileName() {
return uploadFileName;
}


public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}

}


0 0
原创粉丝点击