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>

  

  

posted @ 2012-02-20 17:52  cyjch  阅读(315)  评论(0编辑  收藏  举报