2017-07-17 126 views
0

@GetMapping(值= “/图片”,产生= “应用程序/ PDF格式”) @ResponseBody 公共字符串downloadFile(@PathVariable( “路径”)字符串路径)抛出IOException异常{ClassPathResource downloadLink = new ClassPathResource(“/ assets /”+ path);如何从Web服务下载图像/ PDF文件中的Spring应用程序

HttpHeaders headers = new HttpHeaders(); 
    headers.setContentType(MediaType.parseMediaType("application/pdf")); 
    headers.add("Access-Control-Allow-Origin", "*"); 
    headers.add("Access-Control-Allow-Methods", "GET, POST, PUT"); 
    headers.add("Access-Control-Allow-Headers", "Content-Type"); 
    headers.add("Content-Disposition", "filename=" + path); 
    headers.add("Cache-Control", "no-cache, no-store, must-revalidate"); 
    headers.add("Pragma", "no-cache"); 
    headers.add("Expires", "0"); 

    headers.setContentLength(downloadLink.contentLength()); 
    Base64.getDecoder().decode(path); 
    return "/admin/image"; 
} 

回答

0

我检查你的代码的代码几乎是正确的,但你需要修改一些代码片段,您可以使用下载文件此示例代码:您可以参考这个代码

@RestController 
@RequestMapping("/download") 
public class DownloadFileRestController { 
    @Autowired 
    ServletContext context; 

    @RequestMapping(value = "/pdf/{fileName:.+}", method = RequestMethod.GET, produces = "application/pdf") 
    public ResponseEntity<InputStreamResource> download(@PathVariable("fileName") String fileName) throws IOException { 
     System.out.println("Calling Download:- " + fileName); 
     ClassPathResource pdfFile = new ClassPathResource("downloads/" + fileName); 
     HttpHeaders headers = new HttpHeaders(); 
     headers.setContentType(MediaType.parseMediaType("application/pdf")); 
     headers.add("Access-Control-Allow-Origin", "*"); 
     headers.add("Access-Control-Allow-Methods", "GET, POST, PUT"); 
     headers.add("Access-Control-Allow-Headers", "Content-Type"); 
     headers.add("Content-Disposition", "filename=" + fileName); 
     headers.add("Cache-Control", "no-cache, no-store, must-revalidate"); 
     headers.add("Pragma", "no-cache"); 
     headers.add("Expires", "0"); 

     headers.setContentLength(pdfFile.contentLength()); 
     ResponseEntity<InputStreamResource> response = new ResponseEntity<InputStreamResource>(new InputStreamResource(pdfFile.getInputStream()), headers, HttpStatus.OK); 
     return response; 

    } 
} 
+0

时,出现了base64字符串,我需要将其转换为文件并在html页面上呈现。我无法看到代码 –

+0

中的转换,您可以在解码后发送数据:'ResponseEntity response = new ResponseEntity (new String(Base64.getDecoder()。decode(pdfFile.getInputStream()。toString())),headers, HttpStatus.OK); ' – Sharma

相关问题