Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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
Java 文件下载错误,仅在文件名中使用逗号_Java_Spring Boot_Java Stream - Fatal编程技术网

Java 文件下载错误,仅在文件名中使用逗号

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

在我的文件下载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(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等却处理逗号转义。据一些网站称,这是最近才推出的,谷歌不打算修复它

参考文献