That's indeed default behaviour of IE. It does not use the filename
attribute of the Content-Disposition
header in any way to prepare a default filename for the Save As. Instead, it uses the last part of the request URL path info.
I recommend rewriting your Servlet and/or the links in such way that the desired filename is supplied as part of request path info instead of as for example a request parameter.
So, instead of
<a href="/pdfservlet">View PDF</a>
or
<a href="/pdfservlet?file=foo.pdf">View PDF</a>
you need to use
<a href="/pdfservlet/foo.pdf">View PDF</a>
When mapped on an URL pattern of /pdfservlet/*
, you can if necessary grab the filename part dynamically in the servlet as follows (for example, to locate the desired PDF file and/or to set the right filename
in the header for the more decent webbrowsers):
String filename = request.getPathInfo().substring(1); // foo.pdf
This is by the way regardless of whether it's served inline or as an attachment.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…