springboot 文件上传

本文档展示了如何使用SpringBoot实现单文件和多文件上传,以及文件的下载功能。配置了ResourceHandler处理静态资源,Controller中处理上传请求,接收MultipartFile参数,将文件保存到指定目录,并返回相应页面。同时提供了文件下载的接口,利用ResponseEntity和HttpHeaders设置响应头以触发浏览器下载。
  1. 上传
    1.1 配置一个类
@Configuration
public class MyWebAppConfigurer implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/img/**").addResourceLocations("file:D:\\springboot\\springboot_shop\\img\\");
    }
}

1.2 controller

 @RequestMapping("upload")
    public String upload(String uname , MultipartFile img) throws IOException { // 通过该请求可以去注册的页面
        System.out.println("uname...."+uname);
        System.out.println();
        String filename = img.getOriginalFilename() ;
        String path ="D:\\Program Files\\idea_workspace\\springboot\\springboot_shop\\img";
        File file = new File (path,filename);
        img.transferTo(file);
        return "login";
    }

1.3 html

  <form action="upload" method="post" enctype="multipart/form-data">
         <input type="text" name="uname">
        <input type="file" name="img">
        <input type="submit" value="上传">
    </form>

多文件上传
2.1 html 页面

<form action="upload" method="post" enctype="multipart/form-data">
        <input type="text" name="uname">
        <input type="file" name="img">
        <input type="file" name="img">
        <input type="file" name="img">
        <input type="file" name="img">
        <input type="submit" value="上传">
    </form>

2.2 controller

 @RequestMapping("upload")
    public String upload(String uname, HttpServletRequest request ) throws IOException { // 通过该请求可以去注册的页面
        System.out.println("uname...."+uname);
        System.out.println();
        List<MultipartFile> list = ((MultipartHttpServletRequest)request).getFiles("img");
        for(MultipartFile img : list){
            String filename = img.getOriginalFilename() ;
            String path ="D:\\Program Files\\idea_workspace\\springboot\\springboot_mybatis_html\\img";
            File file = new File (path,filename);
            img.transferTo(file);
        }

        return "index";
    }
  1. 下载
    3.1 下载地址
 <a href="download?fileName=aa.jpg">下载该图片</a>

3.2 pom 配置

<dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>

3.3 controller

@RequestMapping("/download")
    public ResponseEntity<byte[]> download(@RequestParam("fileName") String fileName, HttpServletRequest req)
            throws IOException {

        // 获取文件存放的真实路径
        //String realPath="D:\\Program Files\\idea_workspace\\ssm_ajax_down_upload\\ssm_ajax_down_upload\\images";
        String realPath ="D:\\springboot\\springboot_mybatis_html\\img";

        //创建文件实例
        File file = new File(realPath, fileName);
        //修改文件名的编码格式
        String downloadFileName = new String(fileName.getBytes("UTF-8"), "UTF-8");

        //设置httpHeaders,使浏览器响应下载
        HttpHeaders headers = new HttpHeaders();
        //告诉浏览器执行下载的操作,“attachment”告诉了浏览器进行下载,下载的文件 文件名为 downloadFileName
        headers.setContentDispositionFormData("attachment", downloadFileName);
        //设置响应方式为二进制,以二进制流传输
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值