1

我有一个ASP.NET Web 窗体应用程序。我想创建一个下载链接,让用户可以下载XML 文件。但是,文件不必存储在服务器上。

在我的aspx文件中,我有下载链接(放置在 GridView 中):

 <asp:HyperLinField Text="Download" DataNavigateUrlFormatString="download.aspx?ProductId={0}" DataNavigateUrlFields="ProductId">

下载.aspx.vb页面中:

Dim productId As String = Request.QueryString("productId")
Dim xmlDoc As String = _ProductServices.GetXmlDocPerId(productId)
Dim xdoc As XmlDocument = New XmlDocument()
xdoc.LoadXml(xmlLicense)

现在我想创建一个文件,将 XML 内容放入其中并将其交付给用户,而不将其保存到服务器。我应该将 aMemoryStream与 a 结合使用StreamReader吗?

4

2 回答 2

4

它可以很简单:

Private Sub SendResults()
         'Write the XML for the DataSet.
         Page.Response.ContentType = "text/xml"
         Page.Response.Output.Write(xmlContentAsString)
         Page.Response.End()
    End Sub

本质上,您更改响应输出类型,并将 xmldocument 内容传递给输出。您实际上并没有在系统中创建文件,而是将响应流式传输到客户端。

于 2012-08-28T15:46:47.297 回答
3

您无需创建文件 - 您的 .xml 文件中已有 XML 内容,XmlDocument您可以直接将其输出到浏览器。

未经测试的例子:

Response.ContentType = "application/xml"
Response.Clear()

xdoc.Save(Response.OutputStream)
Response.Flush()

更新:

要让浏览器显示下载对话框,您只需添加一个content-disposition标题:

Response.AddHeader("Content-Disposition", "attachment; filename=some_name.xml");
于 2012-08-28T15:47:02.167 回答