restful实现文件下载

2023-11-01

        private static final byte[] UTF8_BOM = {(byte)0xEF, (byte)0xBB, (byte)0xBF};
        private static final String FAV_ICO = "fav.ico";
        
        @GET
        @Path("/getFile")
        @Produces(MediaType.APPLICATION_OCTET_STREAM)
        public Response getFile(@PathParam("fileName") String fileName) throws IOException{
            ByteArrayOutputStream bos = new ByteArrayOutputStream();

            ZipOutputStream zos = new ZipOutputStream(bos);

            try {
              zos.putNextEntry(new ZipEntry("utf-8.txt"));
              zos.write(UTF8_BOM);
              zos.write("这是一段UTF-8文本".getBytes("UTF-8"));
              zos.closeEntry();
              zos.flush();
              zos.finish();
              return Response.ok(bos.toByteArray(), "application/zip")
                .header("Content-Disposition", "attachment; filename=demo2.zip")
                .build();
            } catch (IOException e) {
              throw new RuntimeException(e);
            } finally {
              try {
                zos.close();
              } catch (IOException e) {}
            }
        }
@GET
@Path("/getMyFile")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response getMyFile() throws IOException{
    File file = new File("123.txt");
    file.createNewFile();
    long fileLength = file.length();
    ResponseBuilder responseBuilder = Response.ok(file);
    responseBuilder.type("application/x-msdownload");
    responseBuilder.header("Content-Disposition", "attachment; filename="
         + URLEncoder.encode("123.txt", "UTF-8"));
    responseBuilder.header("Content-Length", Long.toString(fileLength));
    Response response = responseBuilder.build();
    return response;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

restful实现文件下载 的相关文章

随机推荐

  • Centos卸载gcc

    1 查看安装的gcc版本 y localhost Desktop rpm q gcc gcc 4 4 7 23 el6 x86 64 2 执行卸载命令 rpm e y localhost Desktop rpm e gcc 4 4 7 23
  • Algorithm Accumulation

    目标检测 DPM HOG SIFT 最优匹配 DTW HMM 优化入门 爬山算法 退火算法 遗传算法 多目标优化 ILP 复杂度 NP完全问题 这篇博客就用来积累学过的一些比较好的算法 现开始觉得算法真是一个宝啊 目标检测 DPM 参考博客
  • Oracle中5中分区介绍

    一 范围分区 就是根据数据库表中某一字段的值的范围来划分分区 例如 Sql代码 create table graderecord sno varchar2 10 sname varchar2 20 dormitory varchar2 3
  • Srpingboot注解:@ConditionalOnProperty的用法

    在之前我就一直有一个想法 就是有的bean我不想注入 比如说有的时候用的是A的bean 可能换了一个不同的系统可能要用B的bean 我可不可以自己去配置什么时候注入A什么时候注入B 而不是我都注入 用到那个用哪个 实际 Conditiona
  • Tomcat

    一 Web资源的分类 Web资源分为两类 静态资源和动态资源 静态资源 html css js mp4视频 jpg图片 txt等 动态资源 jsp页面 servlet程序等 二 常用的web服务器 Web服务器 也可以叫javaweb容器
  • 驱动开发 day4 9/13

    head h ifndef HEAD H define HEAD H typedef struct unsigned int MODER unsigned int OTYPER unsigned int OSPEEDR unsigned i
  • JAVA中类的public class与class的区别详解

    1 类的访问权限 为了控制某个类的访问权限 修饰词必须出现在关键字class之前 例如 public class Student 在编写类的时候可以使用两种方式定义类 A public class定义类 B class定义类 2 publi
  • 2021-11-3 内核态和核心态

    1 什么是内核态 当一个进程进行系统调用而陷入内核代码中时 就称程序陷入了内核态 否则就是用户态 用户程序运行在用户态而操作系统运行在内核态 用户态只能执行非特权指令 而内核态可以执行全部指令 内核态可以执行的指令比如 执行I O 设置时钟
  • 拓数派荣获 “2023 年杭州市企业高新技术研究开发中心” 认定

    近日 拓数派上榜由杭州市科学技术局公布的 2023 年杭州市企业高新技术研究开发中心名单 通过专业的技术研发 成果转化和高新技术产业化成绩 获得 杭州市拓数派数据计算企业高新技术研究开发中心 认定 图为 杭州市拓数派数据计算企业高新技术研究
  • Lattice库联合ModelSim仿真FIFO

    Lattice联合ModelSim仿真FIFO 前言 一 添加IP 二 库文件添加 一 方式一 添加器件库到ModelSim 二 方法二 直接添加器件库到Libray 和tb v在同一个目录下仿真 三 仿真 一 仿真文件 二 仿真结果 前言
  • 计算机进制存在的意义

    发布本文的实际想法 是否想过为什么要有进制的存在 如二进制 十进制等 存在即合理 通过思考 得出以下结论 希望能在计算机基础方面给你带来一定的帮助 进制的意义 二进制是计算机看得懂的语言 我们在电脑上所写的一切东西 都需要转成二进制让电脑执
  • ctfshow web4

    提示日志注入 文件包含 还有一个get方式的参数url 有nginx 那就试试它的默认日志目录 日志默认路径 1 apache Linux 日志默认路径 etc httpd logs access log var log httpd acc
  • Window下编译PJSIP,不编译Media模块

    Windows系统下使用VS2017进行编译PJSIP 下载地址 PJSIP的地址 https github com pjsip pjproject 在线clone太慢的话 可以直接在这里下载比clone会快很多 https github
  • 用数组实现邻接表

    用数组实现邻接表 转载自 http blog csdn net wang2534499 article details 47750321 坐在马桶上看算法 算法8 巧妙的邻接表 数组实现 之前我们介绍过图的邻接矩阵存储法 它的空间和时间复杂
  • Android APP专项测试之ADB命令

    Android环境准备 Android APP专项测试需要使用adb命令 需要安装Android SDK参考 验证adb 数据线连接Android设备 或虚拟机 或使用无线连接参考 Android设备进入开发者模式 打开USB调试 USB安
  • 线性DP相关例题

    目录 1 最长公共子序列 2 最长递增子序列 蓝桥骑士 3 字符串转换 4 装箱问题 0 1背包简化版 5 过河卒 1 最长公共子序列 题目描述 给定一个长度为 N 数组 a 和一个长度为 M 的数组 b 请你求出它们的最长公共子序列长度为
  • Django学习小记[5] —— View Request/Response

    在Django中 view是指一个方法 这个方法接收一个request 然后返回一个response 当客户端发送一个请求的时候 Django会创建一个HttpRequest对象 这个对象包含本次请求的所有相关信息 比如请求的路径 请求的参
  • windows环境下,nginx 配置静态网站页面

    server listen 8092 nginx 监听端口 server name 192 168 1 73 localhost 服务器地址 location root E nginx 1 15 0 cx 静态html文件存放目录地址 in
  • c++ 将int、float、double类型转换成string类型

    使用to string 包含在 include 可参考https blog csdn net lzuacm article details 52704931 t t t 0 3578803457785398 std string to st
  • restful实现文件下载

    private static final byte UTF8 BOM byte 0xEF byte 0xBB byte 0xBF private static final String FAV ICO fav ico GET Path ge