传输生成的XML文件而不保存到磁盘

时间:2009-12-10 18:55:20

标签: c# xml forms dynamic download

我有一个大型的Web表单应用程序,我想让用户导出他们的数据,以防他们不想一次完成整个表单。然后当他们返回时,他们可以导入数据并继续他们离开的地方。

原因是客户要求的一部分是不使用数据库。

我已经达到了创建包含所有表单数据的XML文件的程度,但我希望客户端能够下载该XML文件,而无需将应用程序保存到服务器,即使是临时的。 / p>

是否可以创建XML文件并通过流/附件将其传输到客户端而不将其保存到磁盘?

我正在使用C#Asp.net

5 个答案:

答案 0 :(得分:2)

您没有提到您正在使用的服务器技术,但通常是:

  1. 在内存中创建xml文档,并将其写入响应流。
  2. 将内容类型标题更改为text/xml
  3. 将Content-disposition标头更改为attachment; filename=data.xml;
  4. 一些链接: http://en.wikipedia.org/wiki/MIME#Content-Disposition

答案 1 :(得分:2)

您可以写信给HttpResponse:

        HttpResponse response = HttpContext.Current.Response;

        string xmlString = "<xml>blah</xml>";
        string fileName = "ExportedForm.xml";

        response.StatusCode = 200;

        response.AddHeader("content-disposition", "attachment; filename=" + fileName);
        response.AddHeader("Content-Transfer-Encoding", "binary");
        response.AddHeader("Content-Length", _Buffer.Length.ToString());

        response.ContentType = "application-download";
        response.Write(xmlString);

答案 2 :(得分:1)

查看MemoryStream。

http://msdn.microsoft.com/en-us/library/system.io.memorystream.aspx

您应该能够将XML存储在内存中,然后通过HTTP请求将其传送到您的客户端,或者您想要。或者

答案 3 :(得分:1)

    HttpResponse response = HttpContext.Current.Response;

    string xmlString = "<xml>blah</xml>";
    string fileName = "ExportedForm.xml";

    response.StatusCode = 200;

    response.AddHeader("content-disposition", "attachment;
     

filename =“+ fileName);           response.AddHeader(“Content-Transfer-Encoding”,“binary”);           response.AddHeader(“内容长度”,   _Buffer.Length.ToString());

    response.ContentType = "application-download";
    response.Write(xmlString);

但它将所有页面内容保存到文件

答案 4 :(得分:0)

是肯定的。在PHP中它看起来像这样:

header("Content-type: text/xml");
$headerText = "Content-disposition: attachment; filename=file.xml";
header($headerText); 
echo $your_XML_contents;
exit;