Java 允许用户在Web应用程序中保存文件时选择文件类型
目前我正在使用Tomcat和spring框架开发一个web应用程序。CSV文件存储在服务器上,文件路径和文件名存储在数据库中 网页上的搜索按钮将列出数据库中的所有记录,如果用户单击一个列出的项目,将显示一个保存对话框,文件将保存在本地 我希望在用户单击一个项目时打开这样的对话框,我如何使用httpServlet?我可以考虑一种解决方案,即在响应标题中将Java 允许用户在Web应用程序中保存文件时选择文件类型,java,servlets,download,Java,Servlets,Download,目前我正在使用Tomcat和spring框架开发一个web应用程序。CSV文件存储在服务器上,文件路径和文件名存储在数据库中 网页上的搜索按钮将列出数据库中的所有记录,如果用户单击一个列出的项目,将显示一个保存对话框,文件将保存在本地 我希望在用户单击一个项目时打开这样的对话框,我如何使用httpServlet?我可以考虑一种解决方案,即在响应标题中将内容处置设置为“附件”。这将迫使浏览器下载文件,而不是试图在浏览器中显示它。但我希望用户能够选择文件下载的类型。请看下图 将内容类型响应标题设置为
内容处置设置为“附件”。这将迫使浏览器下载文件,而不是试图在浏览器中显示它。但我希望用户能够选择文件下载的类型。请看下图
将内容类型
响应标题设置为浏览器无法呈现的内容,应提示用户在收到响应后保存文件。application/octet stream
(任意二进制数据)的值应该可以实现这一功能
但是,由于您希望实际的文件内容根据用户的选择采用不同的格式,因此需要执行以下操作:
- 在html页面上创建一个链接/表单,允许用户选择一种类型并请求具有适当扩展名的URL(例如,对于xls为
download/file.xls
,对于csv为download/file.csv
)
- 在处理这些URL的servlet中,检查请求的扩展名(容易),然后将文件转换为servlet中的预期格式(不那么容易),并发送响应李>
在您的浏览器中,只保留一个弹出窗口,询问他/她想要下载的文件类型,然后将特定类型的文件流式传输给用户。我认为您似乎并不希望这样做会神奇地将提供的文件转换为“所需”类型。这是不真实的。只需提供/指定您正在写入响应的实际内容所表示的类型(以及相关的默认扩展名)。为什么您认为这很神奇?也许我还没有完全理解这项技术。但我想要的是真正类似于本机应用程序的东西,例如Microsoft Word,编辑一个新文档,然后单击文件->另存为->选择文件类型->保存时滑动。在web应用程序中不可能这样做吗?这将强制浏览器下载文件,但文件扩展名为默认文件扩展名。如果您查看图像,我希望应用程序能够以不同的类型保存文件,例如..@trung-bún您希望用户能够简单地选择不同的扩展名,还是希望内容根据用户的选择采用不同的格式,如xls或csv?是的。这正是我真正想要做的:用户需要能够选择对话框中列出的不同文件扩展名!使用docx扩展名保存CSV文件是没有意义的,对吗?@trung-bún在这种情况下,实际上要复杂得多,因为您需要实现文件的服务器端转换-请参阅对我原始答案的编辑。谢谢!对此进行了近1小时的研究,我意识到这是不可能的。谢谢。