无需输入即可将数据从 Web 应用程序获取到客户端计算机上特定文件夹中的 XML 文件中的方法
Posted
技术标签:
【中文标题】无需输入即可将数据从 Web 应用程序获取到客户端计算机上特定文件夹中的 XML 文件中的方法【英文标题】:Ways to get data from a web application into an XML File in a specific folder on a clients computer without their input 【发布时间】:2014-04-17 15:29:03 【问题描述】:我们有一个执行某些交易的网络应用程序。用户在还有其他应用程序的客户端 PC 上使用 Web 应用程序。第二个应用程序使用与输入我们系统的数据非常相似的数据。目前,用户在我们的系统和第二个系统中都输入了它。
集成到第二个系统的唯一方法是将 XML 文件放在客户端 PC 上的特定文件夹中。我希望能够生成该 XML 文件并将其保存在客户端的计算机上,而无需他们单击或确认任何内容。
我知道没有他们的输入就不可能从浏览器下载到客户端 PC,但如果我可以在他们的 PC 上安装某些东西,肯定有一种简单的方法。
到目前为止,这是我想出的:
1:让服务器生成并托管文件,并显示“下载”对话框,以便用户下载。
我不喜欢这样,因为用户需要在每次交易后确认下载,而且他们选择了下载目录,所以他们有可能将其保存到错误的位置。
2:在服务器上创建一个 WCF 服务,该服务将提供事务信息并从客户端计算机上的应用程序调用它。然后客户端应用程序将生成文件
这个看起来更好,但它仍然不干净。首先,用户必须记住运行应用程序,并且用户名将需要获取相关信息,并且需要为每个用户更新。用户轮班工作,所以如果有人进来但没有更新活动用户的用户名,那么错误的用户名将被发送到 Web 服务,并且不会返回任何数据。
3:使用 HTML5 本地存储保存文件,并通过 PC 上运行的 Windows 服务访问该文件。
我对此进行了研究,但似乎不可行。在本地浏览器存储中创建文件不会在磁盘上为您提供可以轻松访问的文件。
4:使用网络套接字(例如 SignalR)
这个我才刚开始看,还没有完全理解,所以感谢任何 cmet。同样需要使用用户名来确定要发送给客户端的数据。
我想听听关于我在上面解释的方法或任何其他可行的方法的任何 cmet 或建议。
这似乎是一项简单的任务,但我找不到简单的答案,也许第 2 点是要走的路?感谢所有 cmets 和建议
【问题讨论】:
您的建议听起来像是巨大的安全风险。我强烈建议您想出另一种保存数据的方法。 @durbnpoisn 我们将数据保存在安全数据库中。这是一种与特定客户端 PC 上的应用程序集成的方法,我们将能够在其中安装我们自己的应用程序。我们也可以使用证书和 https 【参考方案1】:没有。未经用户同意,您不会在客户端计算机中安装任何东西或将文件放置在文件系统中。这将是一个可笑的巨大安全漏洞。
让用户下载一个安装程序,将文件放置在正确的位置,仅此而已。
【讨论】:
您能详细说明安装程序吗? 安装程序是一个可执行文件,计划将文件放置在文件系统中,注册东西等...用户可以在任何地方下载文件,但安装程序知道需要将东西放在哪里. 我的意思是浏览器。 对于 2 号,您需要客户端应用程序以完全信任的方式运行。 Windows 服务会以管理员身份运行吗?但是,我仍然需要传入当前用户的用户名。也许一个单独的应用程序可以允许用户这样做?【参考方案2】:创建自定义 URL 协议
您将在客户端计算机上安装一个 .exe 或 .vbs 文件(或您创建的任何文件),当自定义 url 协议接收位置时调用该文件,
如:
myproto://createfile?data=somedatahere
您可以在 .exe 文件中执行任何需要的操作,例如使用返回文件内容的 Web 服务。
您需要为 windows 创建一个可执行文件,为 mac 创建另一个。
一旦协议到位,你就可以做一些疯狂的事情,比如设置一个 websocket 来监听触发自定义 url 协议的特定消息,然后使用返回 xml 文件内容并写入它的 web 服务到本地文件系统上的目录。呼……
【讨论】:
【参考方案3】:带有签名证书的 Java 小程序最终可能是最佳选择。有了这个,一旦它们允许小程序运行,我就可以在客户端计算机上生成文件。
【讨论】:
以上是关于无需输入即可将数据从 Web 应用程序获取到客户端计算机上特定文件夹中的 XML 文件中的方法的主要内容,如果未能解决你的问题,请参考以下文章