2017-04-19 20 views
0

PDF base64文字列に疑問がありますが、ファイル名ではなくファイル名がPDFビューアに表示されない理由がわかりません。バイト配列。PDF base64 stringファイル名

サーバーサイドJavaScriptアプリと私はこのファイル名を制御するために何ができるか知っているドントthroughtこのRESTサービスを呼び出す

@RequestMapping(value = "/report", produces = "application/pdf") 
    public @ResponseBody HttpEntity<byte[]> reportPdf(HttpServletRequest request, HttpServletResponse response) 
    ... 
    byte[] document = report.getBytes(StandardCharsets.UTF_8); 
    ... 
    HttpHeaders header = new HttpHeaders(); 
    header.setContentType(new MediaType("application", "pdf")); 
    header.set("Content-Disposition", "inline; filename=asdfasdfasdf.pdf"); 
    header.setContentLength(document.length); 

    return new HttpEntity<byte[]>(document,header); 

- 私。

enter image description here

誰も私に任意の手掛かりを与えることができます?。この場合、この新しいファイル名を変更することは可能でしょうか?

よろしくお願いいたします。

答えて

0

urlでファイル名をエンコードする方が安全です。

String fileName = "asdfasdfasdf.pdf"; 
URLEncoder.encode(fileName, "utf-8"); 
HttpHeaders header = new HttpHeaders(); 
header.setContentType("application/pdf"); 
header.set("Content-Disposition", "inline; filename=" + fileName); 

それともあなたもの間に入れたファイル名で試すことが二重引用符""

HttpHeaders header = new HttpHeaders(); 
header.setContentType("application/pdf"); 
header.set("Content-Disposition", "inline; filename=\"asdfasdfasdf.pdf\""); 
+0

ヘッダー情報がデータURIに含まれているかどうかは分かりませんか? –

0

は最後に、私はこのようなもので、回避策を見つけた:

 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 

     //Setting up Jasper print 
     JasperPrint print = getJasperPrint(REPORTS_PATH + reportPath, result, params); 

     //Setting up Exporter configuration 
     SimplePdfExporterConfiguration pdfExportConfiguration = new SimplePdfExporterConfiguration(); 
     pdfExportConfiguration.setMetadataTitle(title); 

     //Setting up Jasper exporter 
     JRPdfExporter exporter = new JRPdfExporter(); 
     exporter.setExporterInput(new SimpleExporterInput(print)); 
     exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outputStream)); 
     exporter.setConfiguration(pdfExportConfiguration); 

     //Exporting pdf 
     exporter.exportReport(); 
enter code here 

がSimplePdfExporterConfigurationあなたの使い方レポート内に余分な情報を追加しているため、PDFビューアはバイト配列コードの代わりに正しい名前を表示します。

関連する問題