C#仅在本地保存xml文件

时间:2018-01-14 17:50:25

标签: c# asp.net xml webforms

我一直在寻找各地寻找答案,但没有找到答案。

我的ASP.NET Web表单首先将用户输入保存到xml文件到服务器,然后在本地将服务器文件下载到用户,但我希望文件只保存在用户的计算机上,而不是服务器上。我已经弄清楚如何从服务器下载xml到用户的机器,但我不想这样做,因为连接是一个问题。我希望用户访问Web表单,输入值,然后让程序在用户的计算机上本地保存文件。这是我的代码到目前为止保存文件...

DateTime todaysDate = DateTime.Today;
                    string fileName = Regex.Replace(userName, @"'", "") + "_" + todaysDate.ToString("yyyy_MM_dd") + ".xml";


                    new XDocument(
                         new XElement("NewUser",
                         new XElement("userName", Regex.Replace(userName, @"'", "")),
                         new XElement("Role", Regex.Replace(Role, @"'", "")),
                         new XElement("Title", Regex.Replace(Title, @"'", "")),
                         new XElement("Location", Regex.Replace(Location, @"'", "")),
                         new XElement("DocumentSecurity", Regex.Replace(DocumentSecurity, @"'", ""))
                                )
                            )
                    .Save("C:\\" + fileName);
                    String FilePath = "C:\\" + fileName;
                    System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
                    response.ClearContent();
                    response.Clear();
                    response.ContentType = "text/plain";
                    response.AddHeader("Content-Disposition", "attachment; filename=" + fileName + ";");
                    response.TransmitFile(FilePath);
                    response.Flush();
                    response.End();

2 个答案:

答案 0 :(得分:1)

我认为由于安全性,无法将客户端(浏览器)上的文件存储到光盘。您可以执行此操作的唯一方法是将XML发送到服务器,将其保存在临时文件(或内存流)中以及提供用户下载结果的链接之后。

答案 1 :(得分:1)

“我希望用户访问Web表单,输入值,然后让程序在用户的计算机上本地保存文件。这是我的代码到目前为止保存文件......” 您曾经要求的可能性。它是如此容易被滥用,因此容易出错,它被删除而没有更换。不过,那些生活在那个时代的人都会错过它们。

关于它做什么和不做什么的最终权威是浏览器本身。您可以很好地保存一个cookie,但它可能只是说“不”,而且您无法做到这一点。这只是因为我们知道替代方案的导向。我们学到了很多东西。

像你的目标这样的东西是可能的,但不是没有一个让步或其他让步:

  • 您可以让客户端下载/上传带有输入数据的xml文件到您的Webformular。通常的下行和上传对话框适用,用户活动适用。如果在某种程度上不可能在服务器上保存,那么“电子政务”的一些平均应用程序会使用这种方法。使用内存流和XML类,Web服务器端没有任何实际的文件系统访问权限。

  • 或者,您可以在用户端拥有应用程序。这可以是普通的桌面应用程序,Appstore应用程序,ClickOnce部署*甚至Java程序*。主要的是您有一个客户程序,用户允许进入计算机,因此至少具有读/写用户配置文件夹的权限。

  • 当然,您也不需要直接将XML存储到磁盘上。如果你有一个数据库,那么你也可以保存它。 XML最终只是一种文本格式。像HTML一样的标记语言。所以它适用于任何VARCHAR列。在您选择的DBMS中甚至可能存在特殊的XML类型。

*我不是100%确定那些实际上可以随机写的。这可能是易于部署的权衡之一。

相关问题