java学习之路

java实现小程序下载文件

2020-08-12  本文已影响0人  唯有努力不欺人丶

说一下这个功能,首先导出excel这个功能都做n次了,就简书上我都写了两三篇笔记了,但是这次有点小区别,因为据说小程序直接用输出流的形式导出excel文件会打不开,改名字,乱码等等一系列的问题。
当然,作为一个前端渣咱也不敢说,咱也不敢问。反正说是这个方式不能实现就换成能实现的,经过考虑决定实现的方式变成:

其实我这里说了三步,代码就是两个方法:

具体的代码实现如下:

将数据以文件的形式写入到本地的某个文件夹下,并且把文件名称返回前端(因为访问路径是死的,所以这里只返回文件名称就行)

    @Override
    public R excelOut(List<User> list,HttpServletResponse response) {
        try {
            // excel文件名
            String fileName = "excelOut" + no + DateUtils.format(new Date()) + ".xls";
            // 创建HSSFWorkbook,别问我list哪来的,我哪知道你数据哪来的
            HSSFWorkbook wb = PoiUtil.getHSSFWorkbook(list);
            //存到本地
            File excelFile = new File("D:\\monitor\\"+fileName);
            if(!excelFile.exists()) excelFile.createNewFile();
            FileOutputStream fOut = new FileOutputStream(excelFile);        
            //写内容,xls文件已经可以打开
            wb.write(fOut);                            
            //刷新缓冲区
            fOut.flush();
            //关闭                            
            fOut.close();
            return R.ok().put("data", fileName);
        } catch (Exception e) {
            System.err.println(e);
            return R.error();
        }
    }

删除前端缓存完的文件。因为这个逻辑清楚明了,所以比较简单的逻辑。

    @Override
    public R delFile(String name) {
        File file = new File("D:\\monitor\\"+name);
        file.delete();
        return R.ok();
    }

至此这个功能就实现了,其实一点也不复杂,几乎也没啥难度,新手都会的两个io操作,但是这里记录主要是为了思路。其实说起来也没多难,但是当直接导出excel无法实现,能做的也就是转换思路。有时候实现的方式比实现本身更有价值。
这篇笔记就记到这里,如果稍微帮到你了记得点个喜欢点个关注。也祝大家工作顺顺利利!java技术交流群130031711,欢迎各位踊跃加入!

上一篇 下一篇

猜你喜欢

热点阅读