Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 允许用户在Web应用程序中保存文件时选择文件类型_Java_Servlets_Download - Fatal编程技术网

Java 允许用户在Web应用程序中保存文件时选择文件类型

Java 允许用户在Web应用程序中保存文件时选择文件类型,java,servlets,download,Java,Servlets,Download,目前我正在使用Tomcat和spring框架开发一个web应用程序。CSV文件存储在服务器上,文件路径和文件名存储在数据库中 网页上的搜索按钮将列出数据库中的所有记录,如果用户单击一个列出的项目,将显示一个保存对话框,文件将保存在本地 我希望在用户单击一个项目时打开这样的对话框,我如何使用httpServlet?我可以考虑一种解决方案,即在响应标题中将内容处置设置为“附件”。这将迫使浏览器下载文件,而不是试图在浏览器中显示它。但我希望用户能够选择文件下载的类型。请看下图 将内容类型响应标题设置为

目前我正在使用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小时的研究,我意识到这是不可能的。谢谢。