Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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
C#仅在本地保存xml文件_C#_Asp.net_Xml_Webforms - Fatal编程技术网

C#仅在本地保存xml文件

C#仅在本地保存xml文件,c#,asp.net,xml,webforms,C#,Asp.net,Xml,Webforms,我一直在到处寻找这个问题的答案,但是没有找到答案 我的ASP.NET web表单先将用户输入保存到xml文件,然后将服务器文件下载到本地用户,但我希望该文件仅保存在用户的计算机上,而不是服务器上。我已经知道如何从服务器将xml下载到用户的机器上,但我不想这样做,因为连接是一个问题。我希望用户访问web表单,输入值,然后让程序在用户机器上本地保存文件。这是我目前保存文件的代码 DateTime todaysDate = DateTime.Today; str

我一直在到处寻找这个问题的答案,但是没有找到答案

我的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();

我认为由于安全原因,无法将客户端(浏览器)上的文件存储到光盘。唯一可以做到这一点的方法是将XML发送到服务器,保存在临时文件(或内存流)中,然后向用户提供下载结果的链接。

出于安全考虑,我认为无法将客户端(浏览器)上的文件存储到光盘。唯一可以做到这一点的方法是将XML发送到服务器,保存在临时文件(或内存流)中,然后向用户提供下载结果的链接。

“我希望用户访问web表单,输入值,然后让程序将文件保存在用户机器的本地。这是我目前保存文件的代码…” 你所要求的过去是可能的。而且它是如此的可利用,如此容易出错,以至于在没有更换的情况下就被移除了。没有,生活在那个时代的人都不会想念他们

它做什么和不做什么的最终权威是浏览器本身。你可以善意地要求它保存一块饼干,但它可能只是说“不”,你对此无能为力。这仅仅是因为我们知道其他选择的方向。我们是通过艰苦的方式学会的

类似你的目标是可能的,但不是没有任何让步:

  • 您可以让客户端关闭/将包含输入数据的xml文件上载到Webformular。通常的下载和上传对话框适用,用户活动适用。如果不可能在服务器上节省资源,“电子政务”的一些普通应用程序使用这种方法。对于内存流和XML类,Web服务器端不需要实际的文件系统访问

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

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

*我不是100%确定那些人真的可以随意写。这可能是易于部署的折衷办法之一。

“我希望用户访问web表单,输入值,然后让程序将文件保存在用户机器上的本地。这是我目前保存文件的代码…” 你所要求的过去是可能的。而且它是如此的可利用,如此容易出错,以至于在没有更换的情况下就被移除了。没有,生活在那个时代的人都不会想念他们

它做什么和不做什么的最终权威是浏览器本身。你可以善意地要求它保存一块饼干,但它可能只是说“不”,你对此无能为力。这仅仅是因为我们知道其他选择的方向。我们是通过艰苦的方式学会的

类似你的目标是可能的,但不是没有任何让步:

  • 您可以让客户端关闭/将包含输入数据的xml文件上载到Webformular。通常的下载和上传对话框适用,用户活动适用。如果不可能在服务器上节省资源,“电子政务”的一些普通应用程序使用这种方法。对于内存流和XML类,Web服务器端不需要实际的文件系统访问

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

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


*我不是100%确定那些人真的可以随意写。这可能是易于部署的折衷办法之一。

您当然可以
XDocument
直接保存到
响应中。OutputStream
但这会将XML发送到用户的浏览器中,然后由用户将其保存到机器上。在C应用程序中,您的代码在服务器上运行,因此,您所做的任何事情都将发生在服务器上,不可能在用户的计算机上保存任何内容。您始终可以创建一个与服务器交互的HMTL5/Javascript,然后该应用程序将真正位于客户端计算机上,并能够在本地保存文件。
XDocument.save(response.OutputStream)
有什么问题@pinkfloydx33有没有可能给我发一段这样的信息?老实说,我对这个选项一无所知。你当然可以
XDocument
直接保存到
响应中。OutputStream
但这会将XML发送到用户的浏览器,然后由用户将其保存到他的机器上。在C应用程序中,你可以