在我的Spring-boot
应用程序中,要呈现类型.txt
,.pdf
的文件,我将HttpHeader
设置为以下属性。
private HttpHeaders getAppropriateHeaders( String fileType, String fileName )
{
HttpHeaders headers = new HttpHeaders();
switch ( fileType )
{
case FileConstants.PDF_TYPE :
headers.setContentType(MediaType.APPLICATION_PDF);
break;
case FileConstants.TXT_TYPE :
headers.setContentType(MediaType.TEXT_PLAIN);
break;
case FileConstants.PNG_TYPE :
headers.setContentType(MediaType.IMAGE_PNG);
break;
case FileConstants.JPEG_TYPE :
headers.setContentType(MediaType.IMAGE_JPEG);
break;
default :
// If set file will be downloaded
headers.setContentDispositionFormData(fileName, fileName);
break;
}
headers.add("content-disposition", "inline;filename=" + fileName);
headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");
return headers;
}
到目前为止,pdf
,txt
,png
,jpeg
文件正在浏览器中呈现。但我需要做什么以相同的方式呈现.csv
个文件?应在contentType
中设置HttpResponse
?
答案 0 :(得分:1)
您设置的Content-Disposition标题告诉浏览器您希望在浏览器中内嵌显示该文件的内容:
headers.add("content-disposition", "inline;filename=" + fileName);
如果支持,浏览器将执行此操作。例如,大多数(如果不是全部)现代浏览器都支持在浏览器中内嵌显示PDF文件;使用CSV,情况正好相反。
但是,您获得的错误(在评论中描述:localhost sent an invalid response. ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION
)对于CSV文件是正确的,因为您为CSV设置了两次内容处置标题:第一次default
语句的switch
个案,switch
语句后的第二次。
通过处理text/csv
声明中的switch
来纠正错误。