all*_*tej 0 resttemplate spring-boot
我有一个 PDF 资源的 URL,但它不能通过文件名来识别。该请求如下所示:
GET /api/docs/12345
Accept: application/pdf
Run Code Online (Sandbox Code Playgroud)
响应是:
Status: 200 OK
Content-Type: application/pdf
Content-Disposition: attachment; filename="sample.pdf"
Run Code Online (Sandbox Code Playgroud)
当我使用 Postman 调用 api 时,它会提示使用默认文件名“response”保存文件。因此文件保存为“response.pdf”。我需要使用 RestTemplate 客户端以编程方式执行此操作。我如何捕获响应,以便我可以提取文件名(如上面的响应中所示,它是sample.pdf),并且我可以相应地保存文件,而不是诸如“response.pdf”之类的通用文件名
使用 spring boot,您可以通过以下方式获取文件名:
response.getHeaders().getContentDisposition().getFilename()
Run Code Online (Sandbox Code Playgroud)
在以下情况下:
public void retrieveFile() {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_OCTET_STREAM));
HttpEntity<String> entity = new HttpEntity<>(headers);
ResponseEntity<byte[]> response = restTemplate.exchange(Url, HttpMethod.GET, entity, byte[].class, "1");
if(response.getStatusCode().equals(HttpStatus.OK))
{
byte[] scenarioBytesFile = response.getBody();
String fileName = response.getHeaders().getContentDisposition().getFilename();
// Do Someting with your file and name
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5415 次 |
最近记录: |