struts多文件上传
前几天给朋友写一个小程序用到了上传,关于多文件上传的问题。于是乎查了查资料。贴下代码和大家分享下。
关于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 名字都相同 这会只能得到最后一个文件,