Java 文件下载错误,仅在文件名中使用逗号
在我的文件下载API案例中,出现了如下错误Java 文件下载错误,仅在文件名中使用逗号,java,spring-boot,java-stream,Java,Spring Boot,Java Stream,在我的文件下载API案例中,出现了如下错误 org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:380) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer
org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:380)
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:420)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:345)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:405)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:393)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:96)
at org.springframework.util.StreamUtils.copy(StreamUtils.java:128)
at org.springframework.util.FileCopyUtils.copy(FileCopyUtils.java:109)
at
我注意到,只有当试图下载一个名称包含逗号(,)的文件时,才会发生错误,否则它就可以正常工作
在我的API中,我将响应设置为:
response.setContentType("application/octet-stream");
response.setHeader(Constants.CONTENT_DISPOSITION, "attachment; filename= " + fileSeedName);
System.out.println(file.exists());
FileCopyUtils.copy(new BufferedInputStream(new FileInputStream(file)), response.getOutputStream());
response.flushBuffer();
任何人都可以帮助我。将文件路径用双引号括起来。文件名需要双引号才能工作
header('Content-Disposition:attachment;filename="' . $fileName . '.pdf"');
这是Google Chrome特有的一个已知问题,具体与内容处置标题相关。根据大量的参考资料(仅谷歌“Chrome内容处理逗号”),这是因为Chrome没有正确处理逗号转义,而Firefox、IE等却处理逗号转义。据一些网站称,这是最近才推出的,谷歌不打算修复它 参考文献