SpringMVC

您所在的位置:网站首页 springmvc配置文件路径 SpringMVC

SpringMVC

2023-06-20 02:18| 来源: 网络整理| 查看: 265

        SpringMVC-文件的上传与下载与servlet原生的上传和下载功能的思路一样,只不过它们的写法有区别,涉及到IO流。

        文件下载:把文件从服务器复制(下载)到浏览器。

        文件上传:把文件从浏览器复制到服务器。

一、文件下载

其实,下载功能,比如你在浏览器下载图片,只需右键另存,就是说好多浏览器已经自带了。

但是,我们还是要学一下的嘛!

        实现文件的下载,需要使用到ResponseEntity类型: 用在控制器方法的返回值类型,那么该控制器的返回值就是响应到浏览器的响应报文。(其实就是说,下载只需要把响应报文的响应体设置为“我们要下载的文件”,就可以响应到浏览器!)

1.先导入一张图片:

 2、index.html上写入跳转链接

3、在Controller层执行以下代码(这个是一个模板,可直接套用!!路径做修改就好!!)

      实现文件的下载,需要使用到ResponseEntity类型  

      ResponseEntity:可以作为控制器方法的返回值,表示响应到浏览器的完整的响应报文

@Controller public class FileUpAndDownController { @RequestMapping("/test/down") public ResponseEntity testResponseEntity(HttpSession session) throws IOException { //获取ServletContext对象 ServletContext servletContext = session.getServletContext(); //获取服务器中文件的真实路径 String realPath = servletContext.getRealPath("img"); realPath = realPath + File.separator + "csdn.jpg"; //创建输入流 InputStream is = new FileInputStream(realPath); //创建字节数组,is.available()获取输入流所对应文件的字节数(把字节全部获取) byte[] bytes = new byte[is.available()]; //将流读到字节数组中,文件的字节下载到浏览器 is.read(bytes); //创建HttpHeaders对象设置响应头信息 MultiValueMap headers = new HttpHeaders(); // 设置要下载方式以及下载文件的名字。 // Content-Disposition:设置下载文件的下载方式 // attachment:以附件的方式进行下载 // ;filename=1.jpg:设置下载文件默认的名字 headers.add("Content-Disposition", "attachment;filename=csdn.jpg"); //设置响应状态码,(.OK,,响应码为200,成功) HttpStatus statusCode = HttpStatus.OK; //创建ResponseEntity对象 ResponseEntity responseEntity = new ResponseEntity(bytes, headers, statusCode);//响应体、响应头、响应状态码 //关闭输入流 is.close(); return responseEntity; } }

二、文件上传

1、在index.xml设置form表单,提交按钮。

      注意:要求form表单的请求方式必须为post,并且添加属性enctype="multipart/form-data" 

      解析:enctype属性:浏览器向服务器传输请求参数的方式("multipart/form-data":表单中的内容以二进制的方式提交到服务器当中 "application/x-www-form-urlencoded":传输到服务器只有数据、没有文件的)

2、控制器方法:

@Controller public class FileUpAndDownController { @RequestMapping("/test/up") /*MultipartFile是SpringMVC提供简化上传操作的工具类*/ public String testup(MultipartFile photo,HttpSession session) throws IOException { /*获取上传的文件的文件名*/ String fileName = photo.getOriginalFilename();/*要配置上传文件解析器噢!不然是无法获取!具体在下面解释。MultipartFile photo*/ /*获取ServletContext对象*/ ServletContext servletContext = session.getServletContext(); /*获取当前工程下photo目录的真实路径 photoPath:pring_mvc_ajax-1.0-SNAPSHOT*/ String photoPath = servletContext.getRealPath("photo"); /*创建photoPath所对应的file对象,创建在war包下*/ File file = new File(photoPath); /*判断file所对应目录是否存在*/ if(!file.exists()){ file.mkdir(); } /*上传文件的最终路径*/ String finalPath = photoPath + File.separator +fileName; /*实现文件上传*/ photo.transferTo(new File(finalPath)); return "success"; } MultipartFile需要文件上传解析器(必须通过文件解析器的解析才能将文件转换为MultipartFile对象) 在springmvc.xml上添加:

添加依赖:用于解析HTTP请求中上传的文件数据。这个库提供了一种简单易用的方式来处理文件上传,包括处理单个文件和多个文件上传。通过引入这个依赖项,你可以在你的Maven项目中使用commons-fileupload库提供的功能。

commons-fileupload commons-fileupload 1.3.1

成功运行:

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3