2017-07-17 4 views
0

@GetMapping(値= "/ image"、生成= "application/pdf") @ResponseBody public String downloadFile(@PathVariable( "path")Stringパス)がIOExceptionをスローする{ ClassPathResource downloadLink =新しいClassPathResource( "/ assets /" +パス);春のアプリケーションで画像/ PDFファイルをWebサービスからダウンロードする方法

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

Amはなってこのコードを参照することができます私はファイルに変換してHTMLページでレンダリングする必要があるbase64文字列です。私はコードでの変換を見ることができません –

+0

あなたはデコード後にデータを送信することができます: 'ResponseEntity response = new ResponseEntity (new String(Base64.getDecoder()。decode(pdfFile.getInputStream()。toString())) HttpStatus.OK); ' – Sharma

関連する問題