SpringBootJava实现文件上传下载功能-创新互联

SpringBoot实现文件上传下载功能 配置和前端页面
  • maven配置文件
org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-thymeleaf
  • 前端页面
Title文件上传

[[${filename}]]
图片文件下载
  • webconfig配置
@Configuration
public class MyWebAppConfigurer implements WebMvcConfigurer {@Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //  用于前端匹配路径 /AAA-uploaded/** 的时候 可以直接定位到D://AAA-uploaded/图片存储的地址
        //  用于前端页面渲染图片
        registry.addResourceHandler("/AAA-uploaded/**").
                addResourceLocations("file:/" + "D://AAA-uploaded/");
    }
}
  • yaml配置文件
server:
  port: 8080

my-config:
  file-path: D:\
文件上传功能

MultipartFile接收前端传来的文件

成都创新互联主营前郭网站建设的网络公司,主营网站建设方案,成都APP应用开发,前郭h5微信小程序开发搭建,前郭网站营销推广欢迎前郭等地区企业咨询
@Value("${my-config.file-path}")
    private String myFilePath;

    @RequestMapping("upload")
    public String upload(@RequestParam("file") MultipartFile file, Model model) {try {//  避免图片名字重复 采用时间戳+图片名
            String fileName = System.currentTimeMillis() + file.getOriginalFilename();
            //  获取图片存放路径
            String destFileName = myFilePath + "AAA-uploaded" + File.separator + fileName;
            File destFile = new File(destFileName);
            //  判断上一级目录是否存在 不存在则创建
            if (!destFile.getParentFile().exists()) {destFile.getParentFile().mkdirs();
            }
            //  移动文件到指定目录下
            file.transferTo(destFile);
            //  存放到页面用于回显测试
            model.addAttribute("filename", "AAA-uploaded/" + fileName);
        } catch (Exception e) {e.printStackTrace();
            return "上传失败," + e.getMessage();
        }
        return "index";
    }
文件下载功能

ResponseEntity用于控制器方法的返回值类型,该控制器方法的返回值就是响应到浏览器的响应报文

@Value("${my-config.file-path}")
    private String myFilePath;
@ResponseBody
    @RequestMapping("/download")
    public ResponseEntitytestResponseEntity(@RequestParam(value = "imageName", required = false) String 	filename) throws IOException {//  获取图片名称返回给页面用于下载
        String name = filename.split("/")[1];
        File newfile = new File("D:/AAA-uploaded" + File.separator + name);
        if (!newfile.exists()) {throw new IOException(name + "文件不存在");
        }
        //  创建输入流
        InputStream is = new FileInputStream(newfile);
        //  创建字节数组
        byte[] bytes = new byte[is.available()];
        //  将流读到字节数组中
        is.read(bytes);
        //  创建HttpHeaders对象设置响应头信息
        MultiValueMapheaders = new HttpHeaders();
        //  设置要下载方式以及下载文件的名字
        headers.add("Content-Disposition", "attachment;filename="+ name);
        //  设置响应状态码
        HttpStatus statusCode = HttpStatus.OK;
        //  创建ResponseEntity对象
        ResponseEntityresponseEntity = new ResponseEntity<>(bytes, headers, statusCode);
        //  关闭输入流
        is.close();
        return responseEntity;
    }

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章名称:SpringBootJava实现文件上传下载功能-创新互联
网页URL:http://myzitong.com/article/hoghe.html