`
cuilji
  • 浏览: 70231 次
  • 性别: Icon_minigender_1
  • 来自: 本溪
社区版块
存档分类
最新评论

Spring MVC 上传文件

阅读更多
Spring 对 Apache Commons FileUpload组件进行了“包装”,包装之后的API超赞!
1.配置MultipartResolver
<bean id="multipartResolver"
       class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- set the max upload size100MB -->
        <property name="maxUploadSize">
        <value>104857600</value>
    </property>
    <property name="maxInMemorySize">
        <value>4096</value>
    </property>
   </bean>


2.继承SimpleFormController,创建文件上传控制器。首先将传来的HttpServletRequest cast成Spring包装好的MultipartHttpServletRequest然后开始向往常一样去传来的参数,对于文件则直接用getFile("fileName")来获得MultipartFile类型,通过调用他的transferTo(File dest)方法存储到指定位置。
public class InfoFormController2 extends SimpleFormController {
	private static Log log = LogFactory.getLog(InfoFormController.class);
	private String uploadDir;
	private InfoDao infoDao;
	private TopicDao topicDao;
	private ProfileService profileService;
	
	public InfoFormController2(){
//		setCommandClass(InfoDTO.class);
		setCommandClass(Info.class);
	}
	
	protected ModelAndView onSubmit(HttpServletRequest request,
			HttpServletResponse response, Object cmd, BindException errors) {

//		InfoDTO bean = (InfoDTO) cmd;
		 Info bean=(Info)cmd;
//		byte[] bytes = bean.getFile();

		// cast to multipart file so we can get additional information
		MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
		String title = multipartRequest.getParameter("title");
		String author= multipartRequest.getParameter("author");
		String content = multipartRequest.getParameter("content");
		String intro = multipartRequest.getParameter("imgIntro");
		String tid = multipartRequest.getParameter("topicId");
		String infoid=multipartRequest.getParameter("infoId");
		String issue=multipartRequest.getParameter("issue");	
		MultipartFile file = multipartRequest.getFile("file");
		MultipartFile video= multipartRequest.getFile("videoFile");
		Info p = new Info();
		if(infoid != null){
			p.setInfoId(Integer.parseInt(infoid));
		}
		p.setContent(content);
		p.setTitle(title);
		p.setAuthor(author);
		p.setImgIntro(intro);
		p.setTopicId(Integer.parseInt(tid));
		p.setPubDate(new java.util.Date());
		if (! issue.isEmpty()){
		p.setIssue(Integer.parseInt(issue));
		}
		if (!file.isEmpty()){
		// String name=file.getOriginalFilename();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
		String name = sdf.format(new Date()) + ".jpg";
		p.setImgName(name);
//		String uploadDir = this.getUploadDir();
		String uploadDir=getServletContext().getRealPath("/")+ "uploaded";
		File dirPath = new File(uploadDir);
		if (!dirPath.exists()) {
			dirPath.mkdirs();
		}
		String sep = System.getProperty("file.separator");
		File uploadedFile = new File(uploadDir + sep + name);
//		try {
//			FileCopyUtils.copy(bytes, uploadedFile);
//		} catch (IOException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
		try {
			file.transferTo(uploadedFile);
		} catch (IllegalStateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		log.info("********************************");
		log.info(uploadedFile.getAbsolutePath());
//		log.info(bytes.length);
		log.info("********************************");
		}
		if (!video.isEmpty()){
			String videoName=video.getOriginalFilename();
			p.setVideoName(videoName);
//			String uploadDir = this.getUploadDir();
			String videoDir=getServletContext().getRealPath("/")+ "video";
			File dirPath = new File(videoDir);
			if (!dirPath.exists()) {
				dirPath.mkdirs();
			}
			String sep = System.getProperty("file.separator");
			File videoFile = new File(videoDir + sep + videoName);
			try {
				video.transferTo(videoFile);
			} catch (IllegalStateException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			}		
		infoDao.saveOrUpdate(p);		
		return new ModelAndView(new RedirectView("listInfo.htm?pid=1&topicId="+tid));
	}
	
	protected Map referenceData(HttpServletRequest request) {
//		User u=(User)request.getSession().getAttribute("user");
//		int rid=u.getRoleId();		
//		String hql="from Topic";
//		List<Topic> topics = topicDao.findAllTopics();
//		List<Topic> topics=topicDao.findTopicByCondition(hql);
//		List topics=topicDao.getAll(org.zfzy.model.Topic.class);
		Map map = new HashMap();
		HttpSession sess=request.getSession();
		User u=(User) sess.getAttribute("user");
		List topics=profileService.getTopicsByUser(u.getUserId());
		map.put("topics", topics);
		return map;
	}

	protected void initBinder(HttpServletRequest request,
			ServletRequestDataBinder binder) throws ServletException {
//		binder.registerCustomEditor(byte[].class,
//				new ByteArrayMultipartFileEditor());
	}
	
	public void setInfoDao(InfoDao infoDao) {
		this.infoDao = infoDao;
	}
	public void setTopicDao(TopicDao topicDao) {
		this.topicDao = topicDao;
	}

	public String getUploadDir() {
		return uploadDir;
	}

	public void setUploadDir(String uploadDir) {
		this.uploadDir = uploadDir;
	}
	public void setProfileService(ProfileService profileService) {
		this.profileService = profileService;
	}
	@Override
	protected Object formBackingObject(HttpServletRequest request)
			throws Exception {
		// TODO Auto-generated method stub
//		return super.formBackingObject(request);
		if (request.getParameter("infoId") != null
				&& request.getParameter("infoId").trim().length() > 0) {
			Info i=(Info) infoDao.get(Info.class, Integer.parseInt(request.getParameter("infoId")));
//			InfoDTO dto=new InfoDTO();
			
//			dto.setInfoId(Integer.parseInt(request.getParameter("infoId")));
//			dto.setContent(i.getContent());
//			dto.setImgIntro(i.getImgIntro());
//			dto.setTitle(i.getTitle());
//			dto.setAuthor(i.getAuthor());
//			dto.setIssue(i.getIssue());
//			dto.setTopicId(new Integer(i.getTopicId()).toString());
//			dto.setTopicId(i.getTopicId());
			return i;
			
		}
		return new Info();
	}

}

分享到:
评论

相关推荐

    spring mvc上传文件

    -- 设定最大上传文件大小,单位为MB --&gt; ``` 接下来,我们创建一个处理文件上传的Controller。在`@Controller`类中,我们可以定义一个`@RequestMapping`方法,该方法接收`MultipartFile`类型的参数,这表示上传...

    spring学习: spring mvc上传文件方法分析

    本文将深入探讨Spring MVC中的文件上传方法,并基于提供的“spring学习:spring mvc上传文件方法分析”标题进行详细的解析。 首先,理解Spring MVC处理文件上传的基本流程至关重要。当用户在表单中选择文件并提交时...

    spring mvc 上传文件显示进度

    考虑到安全性,应限制上传文件的大小和类型,防止DoS攻击。同时,对于大型文件,可以考虑分块上传,以减轻服务器压力。 通过以上步骤,我们可以在Spring MVC中实现文件上传并显示进度。这个功能可以显著提高用户...

    spring mvc文件上传实现进度条

    在Spring MVC框架中,文件上传是一项常见的功能,而实现文件上传进度条则能提供更好的用户体验。这个场景通常涉及到前端的JavaScript或jQuery库(如jQuery File Upload)与后端的Spring MVC控制器之间的交互,以及...

    Spring MVC上传文件示例

    本文是结合博客的源码,链接是:http://blog.csdn.net/u012660464/article/details/53434331 。名为:SpringMVC轻松实现文件上传功能。其是通过表单进行上传的。

    Spring MVC 文件上传下载 后端 - Java.zip

    在Spring MVC框架中,文件上传和下载是常见的功能需求,特别是在构建Web应用程序时。这个压缩包文件"Spring MVC 文件上传下载 后端 - Java.zip"包含的文档可能详细阐述了如何在Java后端实现这些功能。以下是关于...

    SpringMVC文件上传Demo代码

    在这个示例中,`@RequestParam("file") MultipartFile file`参数表示从请求中获取名为"file"的上传文件。如果文件不为空,代码会尝试读取文件内容并将其保存到服务器。如果在处理过程中出现异常,会返回错误信息。 ...

    spring mvc实现文件上传并携带其他参数的示例

    -- 设定最大上传文件大小,单位为MB --&gt; &lt;property name="maxUploadSize" value="10485760" /&gt; &lt;!-- 10MB --&gt; &lt;!-- 指定临时存储目录 --&gt; &lt;property name="defaultTempFileLocation" value="/tmp/spring/upload" ...

    Spring MVC实现文件的上传下载

    -- 指定最大上传文件大小,例如10MB --&gt; ``` 在Controller中,创建一个处理文件上传的方法,如下所示: ```java @PostMapping("/upload") public String handleFileUpload(@RequestParam("file") MultipartFile...

    精通Spring MVC 4

    本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、优化请求、将Web应用部署到云等内容,循序渐进地讲解了Spring MVC4...

    spring mvc上传 下载ftp文件

    spring mvc上传 下载ftp文件

    ssm框架--spring mvc实现文件上传

    在Spring MVC中,`MultipartFile`类是用于处理上传文件的核心类,它封装了文件的原始名称、临时存储路径、文件大小等信息。你可以通过`MultipartFile`的API读取文件内容,或者将其保存到服务器的指定位置。为了防止...

    spring mvc 文件上传 代码完整版

    这一功能对于构建Web应用程序,尤其是那些需要用户交互并处理上传文件的系统来说至关重要。本项目提供了一个完整的、经过测试的文件上传解决方案,支持多文件上传,并确保其能够正常运行。 在Spring MVC中实现文件...

    Spring MVC文件上传下载

    1. **文件大小限制**:限制上传文件的大小,防止DoS攻击。 2. **文件类型检查**:验证上传文件的类型,防止恶意文件如`.jsp`、`.php`等被执行。 3. **文件名安全**:避免使用用户提供的文件名,防止路径遍历攻击。 4...

    spring mvc 附件上传代码

    `定义了上传文件的保存路径。 - `protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object cmd, BindException errors)`方法用于处理提交的数据。 - `(FileUploadBean...

    IDEA SpringMVC 实现文件的上传下载

    -- 指定最大上传文件大小 --&gt; ``` 3. **Controller层处理**: 创建一个Controller类,定义两个方法,分别处理文件上传和下载的请求。在上传方法中,通过`@RequestParam("file") MultipartFile file`接收上传...

    Spring MVC 文件上传下载

    Spring MVC 是一个强大的 web 应用开发框架,它提供了丰富的功能来处理用户请求,包括文件上传和下载。本文将深入探讨如何使用 Spring MVC 实现文件的上传与下载。 首先,要实现文件上传,我们需要引入一些必要的...

    Spring MVC文件上传

    该方法通常接收一个`MultipartFile`类型的参数,这是Spring MVC为处理上传文件提供的特殊类型。示例代码如下: ```java @Controller public class UploadController { @RequestMapping(value = "/upload", ...

Global site tag (gtag.js) - Google Analytics