restful文件下载功能实现

来源:互联网 发布:xp系统分区软件 编辑:程序博客网 时间:2024/05/21 22:38
        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;        }
原创粉丝点击