Java实现文件浏览器下载

前言:先说下需求,项目需求是用户一点击一个前端页面的链接就可以下载一个压缩包.因为就1个文件,使用文件管理系统像fastDSF,阿里云的OSS这种没必要,直接放在nginx服务器上的怕不好管理,于是给我限定了把文件打包到部署时候的jar包中并实现浏览器下载.

废话不多说,直接上代码!

1.首先是建立一个文件夹存放需要打包的文件,这里我选择的是和src同路径创建一个files,把文件放入文件夹内.
在这里插入图片描述
2.修改pom.xml配置,实现打包时将文件打包到\target\classes\这个目录下,

     <!--pom.xml里直接添加这段就可以把文件打包到\target\classes\目录了,代码能看懂把,要学会灵活运用,里面几个参数根据需要自己改-->
        <resources>
            <resource>
                <directory>files</directory>
                <includes>
                    <include>/*.zip</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>

打包后效果
在这里插入图片描述
3.接下来就是功能实现,很简单,在controller里面实现即可

    @GetMapping("download-template")
    public Result downloadTemplate(HttpServletResponse response) throws IOException {
        ApplicationHome ah = new ApplicationHome(getClass());
        File files = ah.getSource();//这里获取到的是\target\classes\路径创建的File
        File file=new File(files,"导入模板.zip");//这里就是文件的绝对路径创建的File
        System.out.println(file.getParentFile().toString());

        response.setContentType("application/msword");//msword可以随便设置,别和当前项目别的下载冲突接口
        response.setCharacterEncoding("UTF-8");
        String encode = URLEncoder.encode("导入模板", "UTF-8");//这是文件名,这样处理是解决乱码
        response.addHeader("Content-Disposition", "attachment;filename=\"" + encode +".zip" +"\"");
        response.flushBuffer();
        OutputStream outputStream = response.getOutputStream();

        //输出文件
        InputStream inputStream  = new FileInputStream(file);
        IOUtils.copy(inputStream, outputStream);
        //关闭流
        IOUtils.closeQuietly(inputStream);
        IOUtils.closeQuietly(outputStream);

        return Result.success("下载成功");
    }

最后:如果对你有帮助,可以随手点个赞哈,让我看到,我就有动力写的详细点,要不我就直接复制代码做个记录留我自己看就行了哈.
传送门,这里有关于创建临时文件,代码写入修改临时文件内容,最终把临时文件浏览器下载的写法,感兴趣的可以点击这里链接: Aspose.Words for Java实现Word的操作(创建,合并单元格,样式修改,动态插入数据)并浏览器下载或本地导出.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值