SpringMVC实现文件的上传与下载

所需要的jar包

SpringMVC实现文件的上传与下载_第1张图片

一、文件上传 

springmvc.xml


	
		
		
			
		
	
	
	
		
		
			
				error
			
		
	

1、实现上传文件的内容的读取

jsp代码

File: Desc:

java代码 

@ResponseBody
	@RequestMapping("/testHttpMessageConverter")
	public String testHttpMessageConverter(@RequestBody String body) {
		System.out.println(body);
		return "helloword! " + new Date();
	}

运行结果

SpringMVC实现文件的上传与下载_第2张图片

将文件里的内容打印出来

2、单文件上传

jsp代码

上传文件:

Java代码

@RequestMapping("/FileUpload")
	public String queryFileData(@RequestParam("uploadfile") 
		CommonsMultipartFile file, HttpServletRequest request) {
		// MultipartFile是对当前上传的文件的封装,当要同时上传多个文件时,可以给定多个MultipartFile参数(数组)
		if(!file.isEmpty()) {
			//取文件格式后缀名
//			String type = file.getOriginalFilename().substring(
//					file.getOriginalFilename().indexOf("."));
			//取文件名作为保存到服务器的文件名称
			String filename = file.getOriginalFilename();
			//存放的路径
			String path = "D:\\upload\\" + filename;
			//进行路径拼接=前半部分路径+文件名称
			File destFile = new File(path);
			try {
				// FileUtils.copyInputStreamToFile()这个方法里对IO进行了自动操作,不需要额外的再去关闭IO流
				FileUtils
				.copyInputStreamToFile(file.getInputStream(), destFile);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println(path);
			System.out.println(destFile);
			return "success";
		}
		return "error";
	}

 运行结果

SpringMVC实现文件的上传与下载_第3张图片

3、多文件上传

jsp代码

上传文件: 上传文件: 上传文件:

java代码

原理就是将 CommonsMultipartFile变成一个数组

@RequestMapping("/FileUploads")
	public String queryFileDatas(@RequestParam("uploadfile") CommonsMultipartFile[] files, HttpServletRequest request) {
		// MultipartFile是对当前上传的文件的封装,当要同时上传多个文件时,可以给定多个MultipartFile参数(数组)
		if (files != null) {
			for(int i = 0; i < files.length; i++) {
				// 取文件名作为保存到服务器的文件名称
				String filename = files[i].getOriginalFilename();
				// 存放的路径
				String path = "D:\\upload\\" + filename;
				// 进行路径拼接=前半部分路径+文件名称
				File destFile = new File(path);
				try {
					// FileUtils.copyInputStreamToFile()这个方法里对IO进行了自动操作,不需要额外的再去关闭IO流
					FileUtils.copyInputStreamToFile(files[i].getInputStream(), destFile);
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			return "success";
		}
		return "error";
	}

 

二、实现文件下载

这里我们先在项目里放一个文件

SpringMVC实现文件的上传与下载_第4张图片

Test ResponseEntity
@RequestMapping("/testResponseEntity")
	public ResponseEntity testResponseEntity(HttpSession session) throws IOException{
		byte [] body = null;
		ServletContext servletContext = session.getServletContext();
		InputStream in = servletContext.getResourceAsStream("/files/abc.txt");
		body = new byte[in.available()];
		in.read(body);
		
		HttpHeaders headers = new HttpHeaders();
		headers.add("Content-Disposition", "attachment;filename=abc.txt");
		
		HttpStatus statusCode = HttpStatus.OK;
		
		ResponseEntity response = new ResponseEntity(body, headers, statusCode);
		return response;
	}

运行结果 

SpringMVC实现文件的上传与下载_第5张图片

你可能感兴趣的:(springmvc学习,springMVC,文件下载,文件上传)