重命名由Javaservlet流式传输的PDF
使用XSLT、XSL-FO和Apache FOP的正确组合,我能够将PDF发送到某个浏览器窗口。重命名由Javaservlet流式传输的PDF,java,servlets,download,Java,Servlets,Download,使用XSLT、XSL-FO和Apache FOP的正确组合,我能够将PDF发送到某个浏览器窗口。 事实上,我发送的文件内容如下: response.setContentType("application/pdf"); response.setContentLength( out.size()); response.getOutputStream().write( out.toByteArray()); response.ge
事实上,我发送的文件内容如下:
response.setContentType("application/pdf"); response.setContentLength( out.size()); response.getOutputStream().write( out.toByteArray()); response.getOutputStream().flush(); response.setContentType(“application/pdf”); response.setContentLength(out.size()); response.getOutputStream().write(out.toByteArray()); response.getOutputStream().flush(); 正如预期的那样,浏览器在名为“PDF”的选项卡中显示PDF内容,如果我将文件保存在本地,则该名称也默认为PDF.PDF
如何强制输入文件名? 我尝试了以下方法,但没有成功: response.setHeader("Content-Disposition","inline; filename=" + filename + ".pdf" ); response.setHeader(“内容处置”、“内联;文件名=“+filename+”.pdf”); 为了清晰起见,我想在浏览器中显示内容(而不是直接下载)我找到了解决方案 基本上,这是一个改变web.xml中URL模式的问题
浏览器将使用任何页面名称
我以前有
<servlet-mapping>
<servlet-name>PDF</servlet-name>
<url-pattern>/pdf</url-pattern>
</servlet-mapping>
PDF
/pdf
我把它换成了
<servlet-mapping>
<servlet-name>PDF</servlet-name>
<url-pattern>/pdf/*</url-pattern>
</servlet-mapping>
PDF
/pdf/*
使用
http://wherever/pdf/filename.pdf?param1=va1...
将文件名更改为“filename.pdf”将内联
更改为附件
。应该可以了。它确实设置了文件名,但也强制了我不想要的另存为弹出窗口。