利用struts1 实现多个文件上传。
- 编写JSP页面,在JSP页面中利用标签实现文件上传的输入域。
<html:form action="/upload" enctype="multipart/form-data">
上传用户:<html:text property="username"></html:text><br/>
上传文件1:<input type="file" name="list[0]"><br/>
上传文件2:<input type="file" name="list[1]"><br/>
<html:submit value="提交"></html:submit>
</html:form>
- 在Struts—config.xml文件中配置相应的action
<action path="/upload" type="xidian.qyz.web.action.UploadAction"
name="uploadfile">
<forward name="success" path="/pages/success.jsp"></forward>
</action>
- 编写formbean
package xidian.qyz.web.form;
import java.util.ArrayList;
import java.util.List;
import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;
public class uploadform extends ActionForm {
private String username;
private List<FormFile> list = new ArrayList();
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public void setList(int index, FormFile file) {
list.add(file);
}
public FormFile getList(int index) {
return list.get(index);
}
public List<FormFile> getAll() {
return list;
}
}
- 实现相应的action
package xidian.qyz.web.action;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import xidian.qyz.web.form.uploadform;
public class UploadAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
uploadform formbean = (uploadform) form;
System.out.println("文件的个数:"+formbean.getAll().size());
List<FormFile>result=formbean.getAll();
for(FormFile formFile:result){
String filename = formFile.getFileName();
InputStream in = formFile.getInputStream();
FileOutputStream out = new FileOutputStream("c:\\" + filename);
int len = 0;
byte buffer[] = new byte[1024];
while((len=in.read(buffer))>0){
out.write(buffer, 0, len);
}
in.close();
out.close();
}
return mapping.findForward("success");
}
}