MultiPartRequestWrapper类可以通过Struts的ActionContext获取到HttpServletRequest对象然后强转为 MultiPartRequestWrapper。如下是代码。
package com.wanpeng.fmk;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper;
import com.opensymphony.xwork2.ActionSupport;
public class TestAction extends ActionSupport{
public void importUnit(){
try{
HttpServletRequest request = ServletActionContext.getRequest();
// 表示文件上传的form
if (request instanceof MultiPartRequestWrapper) {
MultiPartRequestWrapper requestWrapper = (MultiPartRequestWrapper) request;
Enumeration<String> e = requestWrapper.getFileParameterNames();
if (!e.hasMoreElements()) {
addActionError("-->所选择的文件无效,请确认文件是否存在!");
}
// 有上传文件
while (e.hasMoreElements()) {
String fieldName = String.valueOf(e.nextElement());
File uploadedFile = ((requestWrapper.getFiles(fieldName))[0]);
String fileRealname = requestWrapper.getFileNames(fieldName)[0];
String fileType = getExtension(fileRealname);
int pos = fileRealname.lastIndexOf(".");
// 读取文件内容
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(uploadedFile));
byte[] buffer = new byte[2048];
// 将内容写入到本地文件
String fileName = "D:/test";
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(fileName));
int length = -1;
while ((length = bis.read(buffer)) != -1) {
bos.write(buffer, 0, length);
}
bos.close();
bis.close();
}
}
}catch(Exception e){
}
}
private String getExtension(String fileName) {
if (StringUtils.isEmpty(fileName)) {
return null;
}
int pointIndex = fileName.lastIndexOf(".");
return pointIndex > 0 && pointIndex < fileName.length() ? fileName
.substring(pointIndex + 1).toLowerCase() : null;
}
}