java思路是什么(java新手代码大全)

今天在一个群里扯了半天的给一个初入职场的新手解释文件下载的问题,在此来总结下。

java思路是什么(java新手代码大全)

文件下载有两种方式:

静态文件下载

静态文件直接下载,设置下响应头即可。

//请求路径dowload
@RequestMapping("dowload")  
public void download(HttpServletResponse rep,String filename){
    //设置响应头的Content-Disposition属性为attachment(附件)
    rep.setHeader("Content-Disposition","attachment;filename="+filename);
}

动态文件下载

需要在下载的业务代码里面动态生成文件对象,然后将文件对象输出到网络输出流中。

比如创建一个xls文件并下载,使用的是easyexcel:

先封装一个私有的方法,将list数据封装在ExcelWriter对象中,写出到网络输出流中。

private void createXls(List list, ServletOutputStream os) throws IOException{
            ExcelWriter writer = new ExcelWriter(os, ExcelTypeEnum.XLSX);
            Sheet sheet1 = new Sheet(1, 0);
            sheet1.setSheetName("合同列表");
            List> data = new ArrayList();
            list.forEach(l -> {
                List item = new ArrayList();
                Optional contractName= Optional.ofNullable(l.getContractName());
                item.add(contractName.orElse(""));
                data.add(item);
            });
            List> head = new ArrayList>();
            List headCoulumn1 = new ArrayList();
            headCoulumn1.add("合同名称");
            head.add(headCoulumn1);
            Table table = new Table(1);
            table.setHead(head);
            writer.write0(data, sheet1, table);
            writer.finish();
}

调用方法

本文转载自:https://www.gylmap.com

public void getxls(String name, String from, String to, HttpServletResponse response){
        if ( "".equals(from)) {
            from = "2022-01-01";
        }
        if ( "".equals(to)) {
            to = LocalDate.now().toString();
        }
        List list = contractMapper.selectContractList(Wrappers.lambdaQuery().like(Contract::getContractName, name)
                .between(Contract::getCreateDate, LocalDate.parse(from), LocalDate.parse(to)).orderByDesc(Contract::getCreateDate));
        String xlsName = from + "至" +to + "-合同列表";
        try {
            response.reset(); // 重点突出
            response.setCharacterEncoding("UTF-8"); // 重点突出
            response.setContentType("application/x-msdownload"); // 不同类型的文件对应不同的MIME类型 // 重点突出
            // 对文件名进行编码处理中文问题
            xlsName = new String((xlsName + ".xlsx").getBytes("GB2312"), "ISO-8859-1");
            // inline在浏览器中直接显示,不提示用户下载,默认
            // attachment弹出对话框,提示用户进行下载保存本地
            response.setHeader("Content-Disposition", "attachment;filename=" + xlsName);
            // 通过response流输出,直接输出到客户端浏览器中。
            ServletOutputStream os = response.getOutputStream();
            createXls(list,os);
            os.flush();
            os.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

另外:

静态文件下载需要服务端保存有下载名称的的磁盘文件,必须是真实存在的,文件的生成、删除需要手动处理。

而动态文件下载我们直接将文件对象流写入到网络输出流中,不必保存文件对象到磁盘中,它存在于内存中,会自动被回收处理。

文件的下载不论是动态还是静态都需要传入服务端一定的参数,参数获取我们通常采用get方式传参(URL传参)。

群里扯了半天的需要是这样的:管理员端生成一个特定条件的xls文件供多用户下载。

1.管理员端生成文件的操作是这样的,选择生成条件,post传递给服务端生成xls文件,在保存前先查询当前是否有此文件存在,如果有则删除后再保存。

2.用户端点击的是一个xxx.xx/getxls?filename=xxx的链接,获取的就是服务端保存的那个最新的文件。

每当管理员端重新设置条件生成xls文件后,用户端获取的都是最新的xls文件,因此这个文件名需要固定写死。

秒鲨号所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈!本站将在三个工作日内改正。
(0)

大家都在看

  • 肚涨怎么办(肚子胀气怎么快速排气)

    在我们生活中,每个人都避免不了胀气现象的发生。几乎每个人都经历过。现在人们的生活水平提高了,吃的东西种类也变多了,人们吃的种类多容易造成吃完不消化,出现胀气的症状。出现胀气的时候会…

    2022年5月4日
  • 纪梵希口红多少钱(迪奥口红好还是纪梵希口红好)

    口红是每个女孩都拥有的,对于女生来说对口红的喜爱是永不泯灭的,几乎每年刚出来一些新鲜色号的时候,都会受到广大爱美女孩的追捧,特别是一些寓意比较好的口红色号,更是轻轻松松收获一批粉丝…

    2022年5月22日 专栏投稿
  • 医保多少钱一个月(个人办医保一年多少钱)

    从9月1日开始,陕西省等一些地区开启了2022年度的城乡居民医保缴费。今年的缴费钱数有变化。 按照5月份国家医保局公布的《关于做好2021年城乡居民基本医疗保障工作的通知》,今年继…

    2022年5月27日 专栏投稿
  • 个人社保怎么查(如何查个人养老保险)

    市人社局说,为进一步方便参保人员查询获取个人权益记录信息,2020年度电子《养老保险个人权益记录》已上线,市民朋友可通过“一网通办”、“上海人社”APP、“随申办”APP三种方式查…

    2022年4月30日 专栏投稿
  • 小孩英语怎么说(香港幼儿园用英语怎么说)

    在我们的文化中,人生不同的年龄段有不同的说法,比如,出生不满周岁的叫襁褓,两到三岁的叫孩提,整个幼年时期统称总角,二十弱冠,三十而立,四十不惑,五十知天命。在英文中,不同的年龄段也…

    2022年4月21日 专栏投稿
  • 怎么用苹果7(苹果6s)

    常用的激活苹果6s的方法有两种,一种是通过手机直接激活,另一种是通过连接电脑后用itunes激活!因为Wifi激活iPhone手机,无需借助连接电脑,操作上更为方便,所以小编就向大…

    2022年4月5日
  • 怎么下象棋(怎么下象棋新手入门)

    相信大家和我一样,作为业余象棋爱好者,开始学习一知半解,棋力提升比较慢,以后本号会不断更新象棋基础知识,及其怎么提升象棋技巧,象棋水平一般希望和广大棋友共同讨论研究,欢迎评论交流。…

    2022年4月13日
  • 手机怎么给对方定位怎么设置(怎么追踪对方的位置在哪里)

    手机丢了、找不到了,如何快速定位追踪到手机的位置?其实很简单,任何一部智能手机在打开“查找我的手机”功能的前提下,都可以通过“查找设备”功能来定位或追踪。以华为手机为例,详细操作方…

    2022年7月1日 专栏投稿
  • 钢槽多少钱(槽钢一根价格)

    11月26日四川佳添汇工槽角最新价格行情仅供参考 品名 规格(mm) 材质 产地 价格(元/吨) 涨跌 备注 角钢 40*40*4 Q235B 传洋 5320 过磅 角钢 50*5…

    2022年5月20日
  • 个体户营业执照办理流程(自己免费申请的方法)

    大家好,欢迎进入开发区审批局“业务微讲堂”!以往我们经常会听到前来办理业务的企业和群众反映不知道需要准备什么资料,为了避免企业在材料准备阶段的“往返跑”,今天开始我们就业务办理为大…

    2022年5月16日 专栏投稿
品牌推广 在线咨询
返回顶部