Struts2的上传功能还是很强大的,它可以自动拦截上传文件的相关信息…… 首先需要2个必要的jar包commons-fileupload-1.2.*.jar,commons-io-1.3.*.jar及Struts2其它包。 其它也很简单,主要是Action的处理类,如下: public String upload() { // 判断上传文件是否为空 if (null != fileUpload) { // ServletActionContext.getRequest().getRealPath("/"); //String path= ServletActionContext.getRequest().getRealPath("/");//此方法已过时,建议使用 //下面方法 String path = ServletActionContext.getServletContext().getRealPath("/"); File temp = new File(path + "/upload"); // 判断存储文件的文件夹是否存在,不存在则创建 if (!temp.exists()) { temp.mkdirs(); } // 获取后缀名 String tempName = fileUploadFileName.substring(fileUploadFileName .lastIndexOf(".")); // 给上传文件重命名 File dest = new File(temp, "1" + tempName); copyFile(fileUpload, dest);
ActionContext ctx = ActionContext.getContext(); HttpServletRequest request = (HttpServletRequest) ctx .get(ServletActionContext.HTTP_REQUEST); request.setAttribute("img", "1" + tempName);
} return SUCCESS; }
/** 文件拷贝缓冲功能 */ public void copyFile(File src, File dest) { // 字节输入输出流 BufferedInputStream bis = null; BufferedOutputStream bos = null; // 定义文件上传的字节数组 byte[] b = new byte[8192]; try { bis = new BufferedInputStream(new FileInputStream(src)); bos = new BufferedOutputStream(new FileOutputStream(dest)); for (int count = 0; (count = bis.read(b)) != -1;) { bos.write(b, 0, count); } bos.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (bis != null) { try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } if (bos != null) { try { bos.close(); } catch (IOException e) { e.printStackTrace(); } } }
} |