Spring框架——文件上传(SpringMVC)

文件上传

表单页面

  • method属性必须为post

  • 必须要enctype="multipart/form-data"属性

	<form action="upload1" method="post" enctype="multipart/form-data">
		<input type="text" name="title" /><br>
		<input type="file" name="upfile" /><br>
		<input type="submit" value="submit" />
	</form>

Servlet3.0上传

在web.xml中

<servlet></servlet>中添加

<multipart-config></multipart-config>

在(servletname)-servlet.xml中

	<bean id="multipartResolver"
		class="org.springframework.web.multipart.support.StandardServletMultipartResolver">
	</bean> 

在Java文件中

	@RequestMapping("upload1")
	public void upload1(@RequestParam(value="title") String title,
            @RequestParam(value="upfile") MultipartFile file,
            HttpServletRequest request){
		System.out.println(title);
		String rootPath=request.getServletContext().getRealPath("/");
		if(!file.isEmpty()){
			try {
				InputStream is=file.getInputStream();
				FileOutputStream fos=new FileOutputStream(
						rootPath+"/"+"upload/"
						+file.getOriginalFilename());
				byte []cache=new byte[is.available()];
				fos.write(cache);
				is.close();
				fos.flush();
				fos.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

Commons Fileupload上传

导包

  • commons-fileupload.jar
  • commons-io.jar

在(servlet-name)-servlet.xml中

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
        <property name="defaultEncoding" value="UTF-8"/>  
        <!-- 指定所上传文件的总大小不能超过200KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->  
        <property name="maxUploadSize" value="200000"/>  
    </bean>

在java中

	@RequestMapping("upload2")
	public void upload2(@RequestParam(value="title") String title,
            @RequestParam(value="upfile") MultipartFile file,
            HttpServletRequest request){
		System.out.println(title);
		String rootPath=request.getServletContext().getRealPath("/");
		try {
                        //复制文件 FileCopyUtils.copy(文件字节流,上传的位置);
			FileCopyUtils.copy(file.getBytes(), 
					new File(rootPath+"/upload",file.getOriginalFilename()));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

一个表单多个文件的上传

	@RequestMapping("upload3")
	public void upload3(@RequestParam(value="title") String title,
            @RequestParam(value="upfile") MultipartFile []file,
            HttpServletRequest request){
		System.out.println(title);
		String rootPath=request.getServletContext().getRealPath("/");
		try {
			for(MultipartFile temp:file)
				FileCopyUtils.copy(temp.getBytes(), 
						new File(rootPath+"/upload",temp.getOriginalFilename()));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
posted @ 2020-08-27 22:51  不爱学习的小策  阅读(185)  评论(1编辑  收藏  举报