文件上传与下载

文件上传

 这里file变量名必须和前端页面保存一致,才能完成上传。

这里的file只是一个临时文件,需要转存到指定位置,否则本次请求完成后就会删除。

指定位置可以在yml中进行配置,再使用@value注解进行读取 

 利用getOriginalFilename()函数来获取原文件的文件名,使用UUID.randomUUID().toString()随机生成一个文件名,防止文件名重复导致覆盖,再使用substring(originalFilename.lastIndexOf("."))函数来获取源文件的后缀名进行拼接得到一个新的文件名

 使用transferTo()函数转存

 

文件下载

 文件下载本质上是通过输入流读取文件内容,再通过输出流将文件写回给浏览器进行回显,这里返回的是图片,所有需要设置response.setContentType("image/jpeg");再进行常规的读写操作

  /**
     * 文件下载
     * @param name
     * @param response
     */
    @GetMapping("/download")
    public void download(String name, HttpServletResponse response){

        try {
            //输入流,通过输入流读取文件内容
            FileInputStream fileInputStream=new FileInputStream(new File(basePath+name));

            //输出流,通过输出流将文件写回给浏览器,在浏览器展示图片了
            ServletOutputStream outputStream=response.getOutputStream();

            //设置响应回去的文件
            response.setContentType("image/jpeg");

            int len=0;
            byte[] bytes=new byte[1024];
            while ((len=fileInputStream.read(bytes))!=-1){
                outputStream.write(bytes,0,len);
                //刷新
                outputStream.flush();

                //释放资源
              /*  outputStream.close();
                fileInputStream.close();*/
            }
        } catch (Exception e) {
            e.printStackTrace();
        }


    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值