springboot下文件上传和下载

最近在springboot中使用到的文件上传下载顺便记录一下

1、多文件上传

public void  fileup(@RequestParam("file") MultipartFile[] file)throws Exception {
    //设置上传路径
    String filePath ="F:\\file\\upload";
    for(int i=0;i<file.length;i++){
        //从文件数组中取出数组
        MultipartFile file1=  file[i];
        //获取上传文件的原名
        String fileNames= file1.getOriginalFilename();
        //截取后缀
        String lastName=fileNames.substring(fileNames.lastIndexOf("."));
        //文件名防止重名下载的时候从数据库取出文件原名就行了
        String uuid=UUID.randomUUID().toString();
        String fileid=uuid+lastName;
        //文件上传的file
        File file = new File(filePath+File.separator+fileid);
         //判断文件上一级目录是否存在不存在就创建
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();
            try {
            //执行上传
                MultipartFile.transferTo(file);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }else{
            try {
                MultipartFile.transferTo(file);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

2、文件下载

public ResponseEntity downLoad(String fileid,HttpServletRequest ServletRequest) throws Exception{
    UserInfo user = (UserInfo) ServletRequest.getSession().getAttribute("session_user");
    //获取文件名,这里是从数据库中查询获取的
    String filename=fls.findone(fileid).getFile_name();
    //获取文件路径,这里也是数据库中获取的
    String filepath=fls.findone(fileid).getFile_path();
    FileSystemResource fileSystemResource=new FileSystemResource(filepath);
    HttpHeaders HttpHeaders=new HttpHeaders();
    //在请求头中设置下载的默认信息
    HttpHeaders.add("Content-Disposition","attachment; filename="+ URLEncoder.encode(filename, "UTF-8"));
    return  ResponseEntity.ok()
            .headers(HttpHeaders)
            .contentLength(fileSystemResource.contentLength())
            //以流的方式下载
            .contentType(MediaType.parseMediaType("application/octet-stream"))
            .body(new InputStreamResource(fileSystemResource.getInputStream()));

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值