Struts2的一个和多个文件上传的实现
来源:互联网 发布:红警3网络对战 编辑:程序博客网 时间:2024/05/22 03:24
在Struts2中,上传文件时,只要使用java.io.File类来描述上传文件即可,比直接使用Commons-FileUpload组件要简单的多。
上传单个文件:
如果上传的是单个文件,则在Action类中定义一个File类型的变量。该变量的名字与JSP页面上的<input />标签的name属性相对应,只有这样Struts2才能使客户端上传的文件自动与Action类中的相应的属性进行关联处理。
上传多个文件:
如果上传的是多个文件,这时在JSP页面中的所有的<input type="file" name="upload" />标签的name属性值都必须相同,这时Action中相对应的属性就要使用List或File[]用来表示多个文件的信息。
保存文件相关属性的变量设置如下:
private List<File> upload; //保存上传的文件private List<String> uploadContentType; //保存上传的文件类型private List<String> uploadFileName; //保存上传的文件名
以下是一个使用Struts 2上传多个文件的例子,把上传的文件重新用生成的随机数命名:
Struts2上传文件相关代码
public class UploadFilesAction extends ActionSupport {private List upload;private List uploadContentType;private List uploadFileName;private String uploadPath;private String result;private boolean success;private String msg;public boolean isSuccess() {return success;}public String getMsg() {return msg;}public String getResult() {return result;}public void setUpload(List upload) {this.upload = upload;}public void setUploadContentType(List uploadContentType) {this.uploadContentType = uploadContentType;}public void setUploadFileName(List uploadFileName) {this.uploadFileName = uploadFileName;}public void setUploadPath(String uploadPath) {this.uploadPath = uploadPath;}public String execute() throws Exception {for (int i = 0; i < uploadFileName.size(); i++) { Random random = new Random(); String filename = uploadFileName.get(i); //把上传的文件用生成的随机数重新命名 //并判断生成的文件名是否已经存在 //如果存在,则继续生成随机数命名,直到找打还没使用的随机数为止 filename = uploadPath + random.nextLong() + filename.substring(filename.lastIndexOf(".")); while (new File(filename).exists()) { filename = uploadPath + random.nextLong() + filename.substring(filename.lastIndexOf(".")); } FileOutputStream fos = new FileOutputStream(filename); InputStream is = new FileInputStream(upload.get(i)); byte[] buffer = new byte[8192]; int count = 0; while ((count = is.read(buffer)) > 0) { fos.write(buffer, 0, count);}fos.close();is.close();}success=true;msg = "文件上传成功!";return "result";}}
在struts.xml文件中可做如下配置:
<package name="struts2" namespace="/" extends="struts-default"><action name="uploadFiles" class="uploadtest.actions.UploadFilesAction"><result name="result">/WEB-INF/result.jsp</result><param name="uploadPath">D:\UploadFiles\</param></action></package>
除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/struts2-multiple-file-upload-programming-realization.html
本文链接:http://www.itzhai.com/struts2-multiple-file-upload-programming-realization.html
- Struts2的一个和多个文件上传的实现
- struts2实现单个和多个文件的上传
- 【Struts2】文件上传(一个文件和多个文件)
- Struts2实现多个文件上传的示例
- Struts2的多个文件上传和下载
- struts2 实现文件的上传 和 下载
- Struts2实现文件的上传和下载
- Struts2实现文件的上传和下载
- struts2的文件上传(1):每次上传多个文件
- struts2.0实现多个文件上传的二种方法(通过数组和集合来实现)
- struts2.0实现多个文件上传的二种方法(通过数组和集合来实现)
- struts2的字段校验类型和struts2实现文件上传
- 用struts2实现多文件的上传
- struts2实现多文件的上传
- struts2实现文件的上传
- struts2实现文件的上传
- struts2文件上传的实现
- struts2实现文件的上传
- java
- C# 由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值
- 1002 ( A + B Problem II )
- C语言学习之指针和数组
- 1042 ( N! )
- Struts2的一个和多个文件上传的实现
- c++ map的使用方法
- verilog的学习
- 儒释道大成就者南怀瑾先生
- 在两个已经排好序的数组里找出第K小的数
- android 系统重启与关机:java 代码实现
- Android系列之Wifi定位
- 面向对象
- java的窗体显示颜色