通过保存对话框将Web应用程序中的文件保存到本地目录

时间:2012-10-18 09:07:04

标签: c# xml web-applications save

我有以下代码:

    public static string ExportToXML(DataSet dts, string Filename)
    {
        string returnmsg = "";

        try
        {

            dts.WriteXml(Filename, System.Data.XmlWriteMode.IgnoreSchema);
        }
        catch (Exception err)
        {
            returnmsg = returnmsg + err.ToString();
        }


        return returnmsg;
    }

这将帮助我将我的数据集转换为XML文件。我在我的Web应用程序中创建了一个按钮来调用上面的函数,并期待以下屏幕:

enter image description here

(当然,名称不是default.aspx,而是文件名。)

我在代码中遗漏了什么导致当我点击按钮时没有出现上面的对话框?

4 个答案:

答案 0 :(得分:0)

您传递给WriteXml的第一个参数,字符串Filename是将在服务器上保存的文件的名称

您需要使用HttpResponse对象 - WriteFile方法将采用文件的路径 - 这可能与您在示例代码中编写的文件相同。

因此,在您的代码中的某处,您应该具有以下内容:

ExportToXML(myDataSet, theFileName);

Response.WriteFile(theFileName);

答案 1 :(得分:0)

您应该将transmit文件发送给客户。

基本上你想要

  1. 将XML文件保存在服务器上。

  2. 使用上述方法

  3. 将其传输到客户端

    有关更多信息,请参阅Response.TransmitFile

答案 2 :(得分:0)

您可以调用DataSet.WriteXml Method (Stream, XmlWriteMode)作为第一个参数传递Response.OutputStream。您可能需要在此之前致电Response.Clear()

dts.WriteXml(Response.OutputStream, System.Data.XmlWriteMode.IgnoreSchema); 

答案 3 :(得分:0)

在Yener,Oded和Blachshma的帮助下,

我修改了我的代码如下:

    try{
            HttpContext context = HttpContext.Current;
            context.Response.Clear();

            //dts.WriteXml(Filename, System.Data.XmlWriteMode.IgnoreSchema);
            context.Response.Write("<?xml version=\"1.0\" standalone=\"yes\"?>");
            dts.WriteXml(context.Response.OutputStream, System.Data.XmlWriteMode.IgnoreSchema);
            context.Response.ContentType = "text/xml";
            context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + Filename + ".xml");

            context.Response.End();

    }