50,542
社区成员
发帖
与我相关
我的任务
分享
<html:form action="/upload.do?action=upload" method="post" enctype="multipart/form-data">
<html:file property="file1"/><br>
<html:file property="file2"/><br>
<html:file property="file3"/><br>
<html:file property="file4"/><br>
<html:file property="file5"/><br>
<html:submit>上传</html:submit>
</html:form>
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.upload.FormFile;
import org.apache.struts.upload.MultipartRequestHandler;
import org.apache.struts.upload.CommonsMultipartRequestHandler;
import org.apache.struts.plugins.ModuleConfigVerifier;
import com.sunfairs.exception.FileUnloadException;
import com.sunfairs.util.FileUnloadUtil;
/**
* MyEclipse Struts
* Creation date: 07-08-2009
*
* XDoclet definition:
* @struts.action parameter="action" validate="true"
*/
public class UploadAction extends DispatchAction {
private static final Log log = LogFactory.getLog(UploadAction.class);
public static final String UPLOAD_FOLDER = "/upload";
public ActionForward upload(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
MultipartRequestHandler handler = form.getMultipartRequestHandler();
Hashtable elements = handler.getFileElements();
String uploadPath = request.getRealPath(UPLOAD_FOLDER);
File path = new File(uploadPath);
if(!path.exists()){
path.mkdirs();
}
List<FileUnloadUtil.FileProperty> propertyList = new ArrayList<FileUnloadUtil.FileProperty>();
Collection values = elements.values();
Iterator it = values.iterator();
FileOutputStream output = null;
while(it.hasNext()){
FormFile file = (FormFile) it.next();
FileUnloadUtil.FileProperty property = new FileUnloadUtil.FileProperty();
String fileName = file.getFileName();
String contentType = file.getContentType();
int size = file.getFileSize();
int dotPosition = fileName.lastIndexOf(".");
String suffix = fileName.substring(dotPosition+1, fileName.length());
String fileType = "";
String prefixName = "";
String randName = "";
String uploadPaths = "";
String uploadName = "";
Map map = new HashMap();
try {
map = FileUnloadUtil.getFileType(fileName);
fileType =(String) map.get("fileType");
prefixName = (String) map.get("prefixName");
randName = FileUnloadUtil.getRandomName();
uploadPaths = uploadPath+File.separator+prefixName+randName+"."+suffix;
uploadName = request.getContextPath()+UPLOAD_FOLDER+"/"+prefixName+randName+"."+suffix;
property.setName(uploadName);
property.setSize((float)size/1024);
property.setType(fileType);
property.setContentType(contentType);
property.setUploadTime(new Date());
propertyList.add(property);
} catch (FileUnloadException e1) {
property.setName("未产生文件");
property.setSize(0.0f);
property.setType("未知");
property.setContentType(contentType);
property.setUploadTime(new Date());
propertyList.add(property);
continue;
}
if(file!=null && !fileName.equals("") && size!=0){
byte[]data = new byte[file.getFileSize()];
try {
output = new FileOutputStream(uploadPaths);
data = file.getFileData();
output.write(data);
output.flush();
output.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
request.setAttribute("propertyList", propertyList);
return mapping.findForward("uploads");
}
}
<form-bean name="uploadForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="file1" type="java.lang.String"/>
<form-property name="file2" type="java.lang.String"/>
<form-property name="file3" type="java.lang.String"/>
<form-property name="file4" type="java.lang.String"/>
<form-property name="file5" type="java.lang.String"/>
</form-bean>
<action
attribute="uploadForm"
name="uploadForm"
parameter="action"
path="/upload"
type="com.sunfairs.struts.action.UploadAction">
<forward name="uploads" path="/uploads.jsp"/>
</action>