struts2上传多文件实现原理|Struts2上传多文件实现程序

更新时间:2017-08-10    来源:Action    手机版     字体:

【www.bbyears.com--Action】

Struts2上传多文件也很简单。在Action中把文件对应的属性用数组或者集合接收就可以了。

 代码如下

File[] file; 

String[] fileFileName;

String[] fileContentType;

1、FileUploadAction的代码

package cn.luxh.struts2.action;

 

import java.io.File;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.Date;

 

import org.apache.commons.io.FileUtils;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.apache.struts2.ServletActionContext;

 

import com.opensymphony.xwork2.ActionSupport;

 

 

/**

* 上传文件

* @author Luxh

*/

public class FileUploadAction extends ActionSupport {

 

private static final long serialVersionUID = 2642160699551232611L;

 

private static Log LOG = LogFactory.getLog(FileUploadAction.class);

 

protected File[] file;

protected String[] fileFileName;

protected String[] fileContentType;

 

 

/**

* 上传文件

*/

public String upload() {

try {

File[] files = uploadFile("/upload");

//获得files后

//do some work

//...

}catch(Exception e) {

LOG.error("上传文件出错!");

throw new RuntimeException("上传文件出错");

}

return SUCCESS;

}

 

/**

* 处理上传的文件

* @param saveDir

* @return 

* @throws IOException 

*/

public File[] uploadFile(String saveDir) throws IOException {

if(saveDir==null ||"".equals(saveDir.trim())) {

saveDir = "/upload";

}

File[] files = null;

if(file != null && file.length > 0) {

String saveDirPath = ServletActionContext.getServletContext().getRealPath(saveDir);

File dirFile = new File(saveDirPath);

if(!dirFile.exists()) {

dirFile.mkdir();

}

files = new File[file.length];

for(int i=0;i

if(file[i] != null) {

String newFileName = generateFileName(fileFileName[i]);

File destFile = new File(saveDirPath,newFileName);

FileUtils.copyFile(file[i], destFile);

}

}

}

return files;

 

/**

* 生成文件名

* @param fileName

* @return

*/

private String generateFileName(String fileName) {

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");

String formatDate = sdf.format(new Date());

int position = fileName.lastIndexOf("."); 

String extension = "";

if(position!=-1) {

extension = fileName.substring(position); 

}

return formatDate + extension; 

}

 

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;

}

 

}


2、上传页面upload.jsp

 

请选择文件:


3、配置文件struts.xml

 代码如下

/WEB-INF/pages/common/success.jsp

本文来源:http://www.bbyears.com/flash/34726.html

猜你感兴趣