Spring中开发RESTful风格的文件下载接口,无需保存服务器直接下载文件

Spring中开发RESTful风格的文件下载接口,无需保存服务器直接下载文件

    /**
     * 文本下载
     * @param id
     * @return
     */
    @GetMapping(value = "/demo/download/{id:^[1-9]\\d*$}", produces = {MediaType.MULTIPART_FORM_DATA_VALUE})
    public ResponseEntity<byte[]> download(@PathVariable(value = "id") final int id) {
        DataCall dataCall = dataCallService.findById(id);
        String dialogText = dataCall.getDialogText();
        if (StringUtils.isEmpty(dialogText)) {
            throw new BadRequestException("validate.demo.txt.exist");
        }
        try {
            HttpHeaders headers = new HttpHeaders();
            headers.setContentDispositionFormData("attachment", new String((SessionManager.getSession().getId() + ".TXT").getBytes("UTF-8"), "ISO8859-1"));
            headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
            return new ResponseEntity<>(dialogText.getBytes(), headers, HttpStatus.OK);
        } catch (Exception e) {
            throw new BadRequestException("validate.demo.txt.downLoad");
        }
    }

为什么不使用HttpStatus.CREATED参考:
spring实现文件下载和HttpStatus.CREATED

自定义返回异常信息
Spring中开发RESTful风格的文件下载接口,无需保存服务器直接下载文件_第1张图片

测试效果如下:
Spring中开发RESTful风格的文件下载接口,无需保存服务器直接下载文件_第2张图片

你可能感兴趣的:(java)