[springMVC学习]10、文件上传和下载

导读:本篇文章讲解 [springMVC学习]10、文件上传和下载,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

简介

文件上传

文件下载

总结


简介

        在javaWeb中,处理文件上传下载还是挺麻烦的,但是在springmvc中就简单很多了,下面来进行介绍。


文件上传

        springmvc实现了MultiPartResolver接口,所以可以对上传的文件进行解析,实现这个接口的是CommonsMultiPartResolver

        在springmvc中,默认是没有启用这个文件上传类的,我们需要将其配置进去

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

        下面,我们在web目录下面建一个文件夹,里面随便放一个文件,不然out目录可能并不会生成该目录

[springMVC学习]10、文件上传和下载

         然后就是创建对应的handler

    @RequestMapping("/upload")
    public String upload(@RequestParam("file") MultipartFile uploadFile, HttpServletRequest request) throws IOException {
        //获取文件名称
        String filename = uploadFile.getOriginalFilename();
        //得到保存的路径
        String savePath = request.getServletContext().getRealPath("/file/" + filename);
        System.out.println(savePath);
        //创建文件
        File file = new File(savePath);
        if (!file.exists() && !file.createNewFile())return "fail";
        //转存文件
        uploadFile.transferTo(file);
        return "success";
    }

        解释一下,我们提交的文件使用MultipartFile来进行接受,然后进行转存就行。

        来测试一下,使用postman进行测试

[springMVC学习]10、文件上传和下载

[springMVC学习]10、文件上传和下载

         注意:需要将提交格式设置为mutilpart/form-data。如果是前端使用form表单进行提交,通过设置enctype就行

        提交后后端成功接收到图片

[springMVC学习]10、文件上传和下载


文件下载

        文件下载就是通过返回一个ReponseEntity来完成的,注意:需要给该方法标识为@ResponseBody,因为我在类上使用了@RestController,所以就不用标识了。

    @RequestMapping("/download")
    public ResponseEntity<byte[]> download(){

        return null;
    }

         ResponseEntity里面的类型我们填写的是byte[],就是表示返回的文件是二进制的。接下来我们就需要构建一个ResponseBody进行返回,下面为该类的构造器

[springMVC学习]10、文件上传和下载

        很明显,body就是我们要返回的二进制文件,header和status就是响应头和响应体,下面就是最终的代码

    @RequestMapping("/download")
    public ResponseEntity<byte[]> download(HttpServletRequest request) throws IOException {
        //返回的文件名称
        String fileName = "3.jpg";
        //文件绝对路径
        String realPath = request.getServletContext().getRealPath("/file/" + fileName);
        //输入流
        InputStream inputStream = new FileInputStream(realPath);
        //根据文件大小构建byte[]数组
        byte[] bytes = new byte[inputStream.available()];
        //读数据
        inputStream.read(bytes);
        //创建Headers
        HttpHeaders headers = new HttpHeaders();
        //告诉游览器返回的是文件
        headers.add("Content-Disposition", "attachment;filename=" + fileName);
        //创建Status,HttpStatus.OK就是表示200
        HttpStatus status = HttpStatus.OK;
        return new ResponseEntity<>(bytes, headers, status);
    }

         游览器进行访问

[springMVC学习]10、文件上传和下载

[springMVC学习]10、文件上传和下载 

        成功实现功能。


总结

        上面就是上传下载的方法,很简单,大家根据自己需要进行扩展即可 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74813.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!