Reputation: 1661
i am trying to display a pdf in my browser with spring. my problem is that the browser downloads the file instead of displaying it. this is my code:
@RequestMapping(value="/getpdf1", method=RequestMethod.GET)
public ResponseEntity<byte[]> getPDF1() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/pdf"));
String filename = "pdf1.pdf";
headers.add("content-disposition", "inline;filename=" + filename);
headers.setContentDispositionFormData(filename, filename);
headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");
ResponseEntity<byte[]> response = new ResponseEntity<byte[]>(pdf1Bytes, headers, HttpStatus.OK);
return response;
}
i am looking forward to your answers! thanks
Upvotes: 17
Views: 36834
Reputation: 1
View in browser (use inline) :
header.add(HttpHeaders.CONTENT_DISPOSITION, "inline; filename=" + pdfFile.getName());
For Download (use attachment) :
header.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + pdfFile.getName());
Upvotes: -1
Reputation: 1
it's working you should try do that, get by filename and opnend in browers
@GetMapping(value = "/pdf/{filename:.+}") public ResponseEntity<InputStreamResource> getTermsConditions(@PathVariable String filename) {
File file = storageService.load(filename).getFile();
HttpHeaders headers = new HttpHeaders();
headers.add("content-disposition", "inline;filename=" +fileName);
InputStreamResource resource = new InputStreamResource(new FileInputStream(file));
return ResponseEntity.ok()
.headers(headers)
.contentLength(file.length())
.contentType(MediaType.parseMediaType("application/pdf"))
.body(resource);
}
Upvotes: 0
Reputation: 2364
See code bellow:
headers.setContentDisposition(ContentDisposition.inline().filename("example.pdf").build());
Upvotes: -1
Reputation: 569
Below code Snippet will assist you display the file on the browser
@GetMapping(value = "/terms-conditions")
public ResponseEntity<InputStreamResource> getTermsConditions() {
String filePath = "/path/to/file/";
String fileName = "fileName.pdf";
File file = new File(filePath+fileName);
HttpHeaders headers = new HttpHeaders();
headers.add("content-disposition", "inline;filename=" +fileName);
InputStreamResource resource = new InputStreamResource(new FileInputStream(file));
return ResponseEntity.ok()
.headers(headers)
.contentLength(file.length())
.contentType(MediaType.parseMediaType("application/pdf"))
.body(resource);
}
Upvotes: 3
Reputation: 486
Content-Disposition to control either download or view in browser
View in browser
headers.add("Content-Disposition", "inline; filename=" + "example.pdf");
Download
headers.add("Content-Disposition", "attachment; filename=" + "example.pdf");
Upvotes: 29
Reputation:
You are almost done. Just remove
headers.setContentDispositionFormData(filename, filename);
from your code block. It should be used when posting multipart/form-data to the server.
Upvotes: 17