使用JSP或Javascript更改URL

使用JSP或Javascript更改URL,jsp,url-rewriting,Jsp,Url Rewriting,我目前正在开发一个文档管理系统,它从数据库中获取一个BLOB并显示文档(通常是pdf,但这不重要)。我的代码用于打开文档,但在打开后保存文件时,它会另存为URL.pdf。因此,如果要获取文件的页面的URL为: get.jsp?doc=1 然后从数据库中加载文档,并将其显示给用户 但是,如果您尝试保存文件,默认名称将显示为 get.pdf 我希望它是实际的文档名,存储在数据库中。我想我必须更改URL才能这样做,但我同意它以不同的方式工作,只要文档可以保留用户可能不知道的名称。我正在使用JSP。

我目前正在开发一个文档管理系统,它从数据库中获取一个BLOB并显示文档(通常是pdf,但这不重要)。我的代码用于打开文档,但在打开后保存文件时,它会另存为URL.pdf。因此,如果要获取文件的页面的URL为:

get.jsp?doc=1
然后从数据库中加载文档,并将其显示给用户

但是,如果您尝试保存文件,默认名称将显示为

get.pdf

我希望它是实际的文档名,存储在数据库中。我想我必须更改URL才能这样做,但我同意它以不同的方式工作,只要文档可以保留用户可能不知道的名称。我正在使用JSP。提前感谢。

您可以在使用响应对象的操作中执行此操作。只需将“NAME_the_FILE_HERE”替换为您希望命名的文件

        httpServletResponse.setContentType( "application/pdf" );
        httpServletResponse.setHeader( "Content-Disposition" , "attachment; filename=" + "NAME_THE_FILE_HERE");

它可以作为附件使用,但我想将其用于内联。附件强制下载对话框。我希望用户查看该文件,然后可以选择使用Adobe的插件保存它。也许我误解了你的要求。。只需将“附件”更改为“内联”,就可以保留“;filename=”参数。。httpServletResponse.setHeader(“内容处置”、“内联;文件名=“+”名称\此处的\文件”);我就是这样安排的。出现这个问题是因为Adobe在用作内联文件时似乎无法识别文件名。使用adobe保存PDF时,它会使用URL name.PDF保存。我希望它打开,但我希望Adobe以其原始名称保存它。我认为,为了做到这一点,我需要将URL更改为一个虚拟URL,一个并不存在的URL,但是一个Adobe将读取并获得正确的文件。应该有一种更雄辩的方法。。。下面是一个欺骗URL的示例:以前也有人问过这个问题: