springboot上传和下载文件

注:请求方式必须是post, 通过springmvc提供的MultipartFile类接收上传的文件对应前端上传格式multipart,参数名字必须和前端传来的name一样这里用的名字是file


@RestController
@Slf4j
@RequestMapping("/upload")
public class CommonController {

    //上传文件接口
    @PostMapping
    public Result<String> upload(MultipartFile file) throws IOException {
        //获取原文件名
        String originalFilename = file.getOriginalFilename();
        //提取文件后缀
        String substring = originalFilename.substring(originalFilename.lastIndexOf("."));
        //判断目录是否存在如果不存在先创建目录
        File dir = new File("E:\\编程项目\\resource\\123");
        if(!dir.exists()){
            dir.mkdirs();
        }
        //使用uuid生成文件名并转存文件,fMultipartFile接收的文件默认只是临时存在硬盘,执行完毕就会删掉文件所以要转存
        String name = UUID.randomUUID().toString()+substring;
        file.transferTo(new File("E:\\编程项目\\resource\\123\\"+name));
        return Result.success("转存成功");
    }
}
  /**
     * 下载接口
     * @param name
     * @param response
     */
    @GetMapping("/download")
    public void download(String name, HttpServletResponse response) throws Exception {
        //输入流
        FileInputStream fileInputStream = new FileInputStream(new File(path+name));

        //输出流,直接写给前端
        ServletOutputStream outputStream = response.getOutputStream();
        //设置响应文件格式
        response.setContentType("image/jpeg");
        int len =0;
        byte [] bytes=new byte[1024];
        //读完了len会是-1,不然就是读了多少数量
        while ((len=fileInputStream.read(bytes))!=-1){
            outputStream.write(bytes,0,len);
            outputStream.flush();
        }

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值