我在 CloudBees 上托管了一个 Tomcat 应用程序,它允许用户编辑一些 XML 并保存它们。我需要下载这些文件并将其保存在本地以供我个人使用。但是我找不到这样做的方法。我尝试了“下载源”选项,但它下载的是我上传的原始文件,而不是编辑后的版本。但是,我的应用程序能够访问编辑后的版本(很明显,一切都保存得很好)。取回这些文件对我来说非常重要和必要,事实上,这也是这个应用程序的全部动机。请告诉我是否有某种方法可以取回 CloudBees 或任何其他免费的 Java 托管站点中的文件,这将允许我这样做。
1 回答
您的问题不是很清楚您的应用程序当前如何处理这些文件,但我会尽力提供一些一般信息。
为了支持文件的编辑和下载,您的应用设计需要解决以下问题:
- 用户如何编辑/上传更改的 XML?
- 您的应用程序将更改的 XML 存储在哪里?
- 您的应用程序如何检索已编辑的 XML 并使其可供下载?
对于#1,您需要在您的应用程序中提供一个编辑或上传界面来操作 XML 文件。我假设这是您的应用程序已经使用某种形式解决的问题。
对于 #2,您需要选择一种方法来存储适合应用程序需求的文件以及将部署您的应用程序的运行时环境。例如,在 CloudBees(或大多数其他 CLoud 平台)上,重要的是要了解应用程序的本地文件系统可用于临时存储,但它不是集群的,并且每次更新或重新启动应用程序时都会被擦除. 如果这些 XML 文件需要永远可用,您需要将它们存储在应用程序运行时实例外部的持久位置中。大多数开发人员使用数据库(例如 CloudBees MySQL 服务)以这种方式存储持久数据。通常,您的应用可以将这些文件存储在任何地方,但您的应用需要管理如何存储它们,以及以后如何检索它们。
对于#3,要允许用户下载更改的文件,您需要实现自己的机制,从其持久位置检索文件,然后将其发送回用户的浏览器。如果您希望右键单击“另存为”之类的东西正常工作,那么您的应用只需要支持一个可以直接在浏览器中显示编辑过的 XML 文件的 URL。如果您的应用随后提供了指向该 URL 的链接,则用户可以使用 RightClick+SaveAs 下载它。如果您希望用户能够单击按钮/链接并自动触发另存为对话框,那么您需要编写一个 URL 处理程序 (Servlet),使用 Content-Disposition 标头提供 XML 内容(请参阅这篇StackOverflow 文章)。此标头将告诉浏览器该文件应该保存到磁盘,并允许您提供默认文件名。