• springMVC 文件上传和下载


    1、文件下载

    使用ResponseEntity实现下载文件的功能

    @RequestMapping("/testDown")
    public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws IOException {
        //获取ServletContext对象
        ServletContext servletContext = session.getServletContext();
        //获取服务器中文件的真实路径
        String realPath = servletContext.getRealPath("/static/img/1.jpg");
        //创建输入流
        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=1.jpg");
        //设置响应状态码
        HttpStatus statusCode = HttpStatus.OK;
        //创建ResponseEntity对象
        ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(bytes, headers, statusCode);
        //关闭输入流
        is.close();
        return responseEntity;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    2、文件上传

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

    SpringMVC中将上传的文件封装到MultipartFile对象中,通过此对象可以获取文件相关信息
    上传步骤:
    (1)添加依赖:

    
    <dependency>
        <groupId>commons-fileuploadgroupId>
        <artifactId>commons-fileuploadartifactId>
        <version>1.3.1version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

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

    (3)控制器方法:

    @RequestMapping("/testUp")
    public String testUp(MultipartFile photo, HttpSession session) throws IOException {
        //获取上传的文件的文件名
        String fileName = photo.getOriginalFilename();
        //处理文件重名问题
        String hzName = fileName.substring(fileName.lastIndexOf("."));
        fileName = UUID.randomUUID().toString() + hzName;
        //获取服务器中photo目录的路径
        ServletContext servletContext = session.getServletContext();
        String photoPath = servletContext.getRealPath("photo");
        File file = new File(photoPath);
        if(!file.exists()){
            file.mkdir();
        }
        String finalPath = photoPath + File.separator + fileName;
        //实现上传功能
        photo.transferTo(new File(finalPath));
        return "success";
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    文件在的位置:
    在这里插入图片描述

  • 相关阅读:
    洛谷P1058 立体图
    解决使用npm出现Cannot find module ‘XXXnode_modulesnpmbinnpm-cli.js‘错误
    Unity实现设计模式——命令模式
    MinIO - 站点复制 Site Replication
    (附源码)ssm驾校考试车预约管理系统 毕业设计 271506
    如何上传代码到github
    Ubuntu使用cmake和vscode开发自己的项目,引用自己的头文件和openCV
    java毕业设计网上花店系统源码+lw文档+mybatis+系统+mysql数据库+调试
    表格内日期比较计算
    云酷科技UWB定位系统:智能巡检的新方式
  • 原文地址:https://blog.csdn.net/Don_t_always_ail/article/details/134020187