fileuploadcontroller.java.svn-base

来自「spring+hibernate做的网上订餐系统」· SVN-BASE 代码 · 共 88 行

SVN-BASE
88
字号
package com.pure.web.spring;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.util.FileCopyUtils;
import org.springframework.validation.BindException;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import org.springframework.web.multipart.support.ByteArrayMultipartFileEditor;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

import com.pure.domain.FileUpload;
import com.pure.domain.Image;
import com.pure.util.ActiveUploadFile;
import com.pure.util.PureUtil;

public class FileUploadController extends SimpleFormController  {
	protected final Log logger = LogFactory.getLog(getClass());

	private String uploadDir;// 上传文件路径

	protected ModelAndView onSubmit(HttpServletRequest request,
			HttpServletResponse response, Object command, BindException errors)
			throws Exception {
		
		HttpSession session = request.getSession();
		String realPath = session.getServletContext().getRealPath("/");
		FileUpload bean = (FileUpload) command;
		byte[] bytes = bean.getFile();

		MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
		CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest.getFile("file");

		String sep = System.getProperty("file.separator");
		String uploadDir = realPath+this.getUploadDir();

		File dirPath = new File(uploadDir);
		if (!dirPath.exists()) {
			dirPath.mkdirs();
		}
		//原文件名
		String fileName = file.getOriginalFilename();
		//新文件名
		String nFileName = PureUtil.getUploadFileName()+PureUtil.getUploadFileEx(fileName);
		
		File uploadedFile = new File(uploadDir+sep+ nFileName);
		FileCopyUtils.copy(bytes, uploadedFile);
		
		ActiveUploadFile activeUploadFile = ActiveUploadFile.getInstance();
		Image image = new Image();
		image.setName(fileName);
		image.setNewname(nFileName);
		image.setSize(new Long(uploadedFile.length()));
		activeUploadFile.addUploadFile(image);
		
		session.setAttribute("files",activeUploadFile.getUploadFiles());
		
		Map uploadFileList = new HashMap();
		uploadFileList.put("file",file.getOriginalFilename());
		return new ModelAndView(getSuccessView(),uploadFileList);
	}

	protected void initBinder(HttpServletRequest request,
			ServletRequestDataBinder binder) throws ServletException {
		binder.registerCustomEditor(byte[].class,new ByteArrayMultipartFileEditor());
	}

	public void setUploadDir(String uploadDir) {
		this.uploadDir = uploadDir;
	}

	public String getUploadDir() {
		return this.uploadDir;
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?