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
自定义返回异常信息
测试效果如下:
欢迎关注微信公众号《元旦儿的北漂》,有很多程序员的干活哦。
oracle序列详解