前几天给朋友写一个小程序用到了上传,关于多文件上传的问题。于是乎查了查资料。贴下代码和大家分享下。
关于struts上传 我们首先来看下actionForm类中的代码
接下来我们来看下action里的代码。关于struts的上传我采用的是 org.apache.struts.upload.MultipartRequestHandler 中的 MultipartRequestHandler
类。接下来看下action中的代码
这里要注意的 在JSP 页面里 file 的name 要有所不同这样才能实现多文件上传,如果所写的JS 里面的FILE 名字都相同 这会只能得到最后一个文件,
关于struts上传 我们首先来看下actionForm类中的代码
public class FileForm extends ActionForm {
private List<FormFile> myfile = new ArrayList<FormFile>();
public List<FormFile> getMyfile() {
return myfile;
}
public void setMyfile(List<FormFile> myfile) {
this.myfile = myfile;
}
接下来我们来看下action里的代码。关于struts的上传我采用的是 org.apache.struts.upload.MultipartRequestHandler 中的 MultipartRequestHandler
类。接下来看下action中的代码
FileForm forms=(FileForm)form;
//利用MultipartRequestHandler处理同时上传多个文件
MultipartRequestHandler mrh =forms.getMultipartRequestHandler();
Hashtable elements = mrh.getFileElements();
Collection values = elements.values();
int k = 0;
for (Iterator i = values.iterator(); i.hasNext();){
// 取得上传的文件
FormFile file = (FormFile) i.next();
//获取文件字节流
InputStream ins=file.getInputStream();
//以时间格式生成文件名
String path=request.getSession().getServletContext().getRealPath("/upload");
//用输出流保存文件
OutputStream fos = new FileOutputStream(path+"/"+file.getFileName());
int bytes=0;
byte[] buffer = new byte[8192];
while((bytes=ins.read(buffer, 0, 8192))!=-1){
fos.write(buffer, 0, bytes);
}
k++;
ins.close();
//关闭输出流
fos.close();
}
这里要注意的 在JSP 页面里 file 的name 要有所不同这样才能实现多文件上传,如果所写的JS 里面的FILE 名字都相同 这会只能得到最后一个文件,