struts2上传多文件
public class UploadAction { private static final long serialVersionUID = 7738910297605127355L; //private News news; //注入实体对象 private static final int BUFFER_SIZE = 16 * 1024;// 缓冲-上传字节数组 private String upfileName; private List<File> uploads = new ArrayList<File>(); private List<String> uploadFileNames = new ArrayList<String>(); private List<String> uploadContentTypes = new ArrayList<String>(); public String add() { int size = uploadContentTypes.size(); if (size > 0) { for (int i = 0; i < size; i++) { String contentype = uploadContentTypes.get(i); if (contentype.indexOf("image") > -1) { File imageFile = new File(ServletActionContext.getServletContext().getRealPath("/upload/images")+ "/" + uploadFileNames.get(i)); UploadUtil.copy(uploads.get(i), imageFile, BUFFER_SIZE); String picturePath = "/upload/images" + "/" + uploadFileNames.get(i); String picName = uploadFileNames.get(i); // 设置实体对象中的图片地址 // news.setPicturePath(picturePath); // news.setPictureName(uploadFileNames.get(0)); System.out.println("图片地址:" + picturePath); System.out.println("图片名称:" + picName); } /*否则就是上传附件,不是图片 else { File fujianFile = new File(ServletActionContext.getServletContext().getRealPath("/upload")+ "/" + uploadFileNames.get(1)); UploadUtil.copy(uploads.get(1), fujianFile, BUFFER_SIZE); // 设置实体对象中的图片地址 // news.setUpfileName(uploadFileNames.get(1)); String picturePath = "/upload/images" + "/" + uploadFileNames.get(0); String picName = uploadFileNames.get(0); System.out.println("图片地址:" + picturePath); System.out.println("图片名称:" + picName); } */ } } return "upload"; } public String getUpfileName() { return upfileName; } public void setUpfileName(String upfileName) { this.upfileName = upfileName; } public List<File> getUpload() { return this.uploads; } public void setUpload(List<File> uploads) { this.uploads = uploads; } public List<String> getUploadFileName() { return this.uploadFileNames; } public void setUploadFileName(List<String> uploadFileNames) { this.uploadFileNames = uploadFileNames; } public List<String> getUploadContentType() { return this.uploadContentTypes; } public void setUploadContentType(List<String> contentTypes) { this.uploadContentTypes = contentTypes; } }
UploadUtil.java
-------------------
/** * 上传文件,名称以日期命名 * * @author Administrator */ public class UploadUtil { /** * 上传文件 * * @param src * 源文件 * @param dst * 目标文件 * @param BUFFER_SIZE * 缓冲大小 */ public static void copy(File src, File dst, final int BUFFER_SIZE) { try { InputStream in = null; OutputStream out = null; try { in = new BufferedInputStream(new FileInputStream(src)); dst = rename(dst); out = new BufferedOutputStream(new FileOutputStream(dst)); int word = 0; while ((word = in.read()) != -1) { out.write(word); } } finally { if (null != in) { in.close(); } if (null != out) { out.close(); } } } catch (Exception e) { e.printStackTrace(); } } /** * 得到扩展名 * @param fileName * @return */ public static String getExt(String fileName) { int pos = fileName.lastIndexOf("."); return fileName.substring(pos); } /** * 更改上传文件名 * @param file 文件对象 * @return 更名后的文件对象 */ public static File rename(File file) { String fileName = "";// 文件名 String extName = "";// 文件扩展名 Calendar cal = Calendar.getInstance(); SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss"); fileName = formatter.format(cal.getTime()) + (int) (Math.random() * 10); extName = getExt(file.getName()); String newName = fileName + "." + extName; file = new File(file.getParent(), newName); return file; } }
upload.jsp
<html> <body> <s:form method="post" action="jupload" enctype ="multipart/form-data"> 上传图片:<s:file name ="upload" theme="simple"/> <br/> 上传附件:<s:file name ="upload" theme="simple"/> <br/> <s:submit theme="simple" value="提交"/> </s:form> </body> </html>
struts.xml
<!-- 上传文件 cyjch --> <action name="jupload" method="add" class="upAction" > <result name="upload">upload.jsp</result> </action>