SpringMVC学习笔记(十)—— 文件上传与下载

10、文件上传与下载

10.1、文件下载

1、超链接

file.html

<a th:href="@{/testDown}">下载2.jpga>

2、使用ResponseEntity实现文件下载

FileUpAndDownController.java

@Controller
public class FileUpAndDownController {@RequestMapping("/testDown")public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throwsIOException {//获取ServletContext对象ServletContext servletContext = session.getServletContext();//获取服务器中文件的真实路径String realPath = servletContext.getRealPath("/static/img/2.jpg");System.out.println("realPath = " + realPath);//创建输入流InputStream is = new FileInputStream(realPath);//创建字节数组byte[] bytes = new byte[is.available()];//将流读到字节数组中is.read(bytes);//创建HttpHeaders对象设置响应头信息MultiValueMap<String, String> headers = new HttpHeaders();//设置要下载方式以及下载文件的名字headers.add("Content-Disposition", "attachment;filename=2.jpg");//设置响应状态码HttpStatus statusCode = HttpStatus.OK;//创建ResponseEntity对象ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(bytes, headers, statusCode);//关闭输入流is.close();return responseEntity;}
}

10.2、文件上传

1、添加依赖

pom.xml

<dependency><groupId>commons-fileuploadgroupId><artifactId>commons-fileuploadartifactId><version>1.3.1version>
dependency>

2、在SpringMVC的配置文件中添加配置:

springMVC.xml


<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">bean>

3、创建页面

file.html

<form th:action="@{/testUp}" method="post" enctype="multipart/form-data">头像:<input type="file" name="photo"><br><input type="submit" name="上传">
form>

文件上传要求form表单的请求方式必须为post,并且添加属性enctype="multipart/form-data"

SpringMVC中将上传的文件封装到MultipartFile对象中,通过此对象可以获取文件相关信息

4、实现文件上传功能

FileUpAndDownController.java

@Controller
public class FileUpAndDownController {@RequestMapping("/testUp")public String testUp(MultipartFile photo, HttpSession session) throws IOException {//获取上传文件的文件名String fileName = photo.getOriginalFilename();//获取上传文件的后缀名String suffixName = fileName.substring(fileName.lastIndexOf("."));//将UUID作为文件名String uuid = UUID.randomUUID().toString();//将uuid和后缀名拼接后的结果作为最终的文件名——解决上传文件重名问题fileName = uuid + suffixName;//通过ServletContext获取服务器中photo目录的路径ServletContext servletContext = session.getServletContext();String photoPath = servletContext.getRealPath("photo");File file = new File(photoPath);//判断photoPath所对应的路径是否存在if (!file.exists()) {//若不存在,则创建目录file.mkdir();}String finalPath = photoPath + File.separator + fileName;photo.transferTo(new File(finalPath));return "success";}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部