Java 如何在下载过程中更改文件名

Java 如何在下载过程中更改文件名,java,jsp,Java,Jsp,我的服务器上有一个名为“MyFile.doc”的文件,同一个实例中有一个jsp。jsp中有一个重定向,如:response.sendRedirect(“MyFile.doc”);。当用户访问我的jsp文件时,我希望将该文件命名为“MyFile_XYZT.doc”。简而言之,它应该使用动态创建的ID下载 我已经搜索并找到了一些关于内容处理方法的信息 有什么想法吗 我已经搜索并找到了一些关于内容处理方法的信息 好的,这就是告诉浏览器您希望它对响应做什么的方式,包括可选地提供下载的建议文件名 不过,我

我的服务器上有一个名为“MyFile.doc”的文件,同一个实例中有一个jsp。jsp中有一个重定向,如:response.sendRedirect(“MyFile.doc”);。当用户访问我的jsp文件时,我希望将该文件命名为“MyFile_XYZT.doc”。简而言之,它应该使用动态创建的ID下载

我已经搜索并找到了一些关于内容处理方法的信息

有什么想法吗

我已经搜索并找到了一些关于内容处理方法的信息

好的,这就是告诉浏览器您希望它对响应做什么的方式,包括可选地提供下载的建议文件名

不过,我认为这里没有一艘班轮。您需要将服务器配置为返回带有相关
内容配置
标题的
MyFile.doc
,或者,如果您想在JSP中用代码控制名称,您必须自己发送响应,使用设置
内容配置
标题。例如:

response.setHeader("Content-Disposition", "attachment; filename=\"MyFile_XYZT.doc\"");

…然后打开文件,读取其内容,并在响应中发送这些内容。代码不多(可能有四行或五行),但也不是一行。

尝试实现您找到的解决方案,看看它是否工作正常,怎么样?谢谢您的回答。如果我像你建议的那样使用response.setHeader,它会将所有下载的文件命名为“MyFile_XYZT.doc”,因为它是为“filename”参数编写的?@ftb:它会建议浏览器在发送响应的内容中使用该名称。当然,如果您想在每个请求上使用不同的名称,可以通过字符串连接来实现。这里的关键是您需要发送头,然后将文件内容作为响应流输出。你不能发送重定向。