让用户在 Web 应用程序中保存文件时选择文件类型
Let user choose file type while saving a file in Web application
我目前正在使用 Tomcat 和 spring 框架开发 Web 应用程序。 CSV 文件存储在服务器上,文件的路径和文件名存储在数据库中。
网页上的搜索按钮将列出数据库中的所有记录,如果用户单击其中一个列出的项目,将显示一个保存对话框并将文件保存到本地。
我想在用户单击一个项目时打开这样的对话框,如何使用 httpServlet 来实现?我可以考虑一个解决方案是设置 content-disposition
类型响应 header 到 'attachment'。它会强制浏览器下载文件而不是尝试在浏览器中显示它。但我希望用户能够 select 文件下载的类型。请看下图
将 Content-Type
响应 header 设置为浏览器无法呈现的内容应该会提示用户在收到响应后保存文件。 application/octet-stream
(任意二进制数据)的值应该可以解决问题。
但是,由于您希望实际文件内容根据用户选择采用不同格式,因此您需要执行以下操作:
- 在您的 html 页面上创建一个 link/form,允许用户 select 一个类型并向 URL 发出具有适当扩展名的请求(例如
download/file.xls
对于 XLS 或 download/file.csv
对于 CSV)。
- 在处理这些 URL 的 servlet 中,检查请求的扩展名(简单),然后将文件转换为您的 servlet 中的预期格式(不太容易)并发送它作为响应。
我目前正在使用 Tomcat 和 spring 框架开发 Web 应用程序。 CSV 文件存储在服务器上,文件的路径和文件名存储在数据库中。
网页上的搜索按钮将列出数据库中的所有记录,如果用户单击其中一个列出的项目,将显示一个保存对话框并将文件保存到本地。
我想在用户单击一个项目时打开这样的对话框,如何使用 httpServlet 来实现?我可以考虑一个解决方案是设置 content-disposition
类型响应 header 到 'attachment'。它会强制浏览器下载文件而不是尝试在浏览器中显示它。但我希望用户能够 select 文件下载的类型。请看下图
将 Content-Type
响应 header 设置为浏览器无法呈现的内容应该会提示用户在收到响应后保存文件。 application/octet-stream
(任意二进制数据)的值应该可以解决问题。
但是,由于您希望实际文件内容根据用户选择采用不同格式,因此您需要执行以下操作:
- 在您的 html 页面上创建一个 link/form,允许用户 select 一个类型并向 URL 发出具有适当扩展名的请求(例如
download/file.xls
对于 XLS 或download/file.csv
对于 CSV)。 - 在处理这些 URL 的 servlet 中,检查请求的扩展名(简单),然后将文件转换为您的 servlet 中的预期格式(不太容易)并发送它作为响应。