Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring-在浏览器中显示PDF文件,而不是下载_Spring_Pdf_Browser_Http Headers - Fatal编程技术网

Spring-在浏览器中显示PDF文件,而不是下载

Spring-在浏览器中显示PDF文件,而不是下载,spring,pdf,browser,http-headers,Spring,Pdf,Browser,Http Headers,我正在尝试使用spring在浏览器中显示pdf。 我的问题是浏览器下载文件而不是显示它。 这是我的代码: @RequestMapping(value="/getpdf1", method=RequestMethod.GET) public ResponseEntity<byte[]> getPDF1() { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.pars

我正在尝试使用spring在浏览器中显示pdf。 我的问题是浏览器下载文件而不是显示它。 这是我的代码:

@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;
}
@RequestMapping(value=“/getpdf1”,method=RequestMethod.GET)
公共响应getPDF1(){
HttpHeaders=新的HttpHeaders();
headers.setContentType(MediaType.parseMediaType(“application/pdf”);
字符串filename=“pdf1.pdf”;
headers.add(“内容处置”、“内联;文件名=“+filename”);
headers.setContentDispositionFormData(文件名、文件名);
headers.setCacheControl(“必须重新验证,后检查=0,前检查=0”);
ResponseEntity response=新的ResponseEntity(pdf1Bytes,headers,HttpStatus.OK);
返回响应;
}
我期待着你的回答!
谢谢

你差不多做完了。移除

headers.setContentDispositionFormData(filename, filename);

从您的代码块。将多部分/表单数据发布到服务器时应使用它。

在浏览器中控制下载或查看的内容配置

headers.add("Content-Disposition", "inline; filename=" + "example.pdf");
在浏览器中查看

headers.add("Content-Disposition", "inline; filename=" + "example.pdf");
下载

headers.add("Content-Disposition", "attachment; filename=" + "example.pdf");

下面的代码片段将帮助您在浏览器上显示文件


@GetMapping(value=“/terms-conditions”)
公共响应获取条件(){
字符串filePath=“/path/to/file/”;
字符串fileName=“fileName.pdf”;
文件=新文件(文件路径+文件名);
HttpHeaders=新的HttpHeaders();
headers.add(“内容处置”、“内联;文件名=“+filename”);
InputStreamResource资源=新的InputStreamResource(新文件InputStream(文件));
返回ResponseEntity.ok()
.标题(标题)
.contentLength(文件.length())
.contentType(MediaType.parseMediaType(“应用程序/pdf”))
.机构(资源);
}

我试过这样做,但仍然是下载,而不是在浏览器中查看。这里的确切解决方案是什么。解决方案:代码块来自OP的问题,但没有setContentDispositionFormData。也许你应该发布一个新问题。脱离主题,但你是否知道如何在新选项卡中打开此pdf查看器时从中删除spring leaf图标(web浏览器图标)?将你的favicon放在网站的根目录下,例如。另请参见。它不适用于我。我可以在浏览器上呈现
.csv
文件吗?需要设置什么才能做到这一点?尝试将“headers.setContentType(MediaType.parseMediaType(“application/pdf”);”替换为“response.setContentType(“text/plain;charset=utf-8”);“很棒的东西,非常有用,谢谢!