Как создать и загрузить XML, не сохраняя его на сервере
У меня есть приложение ASP.NET Web Forms. Я хотел бы создать ссылку для скачивания, чтобы предоставить пользователю возможность скачать файл XML. Однако файл не должен храниться на сервере.
В моем файле ASPX у меня есть ссылка для скачивания (размещен внутри GridView):
<asp:HyperLinField Text="Download" DataNavigateUrlFormatString="download.aspx?ProductId={0}" DataNavigateUrlFields="ProductId">
На странице download.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 внутри и передать его пользователю, не сохраняя его на сервере. Должен ли я использовать MemoryStream
в сочетании с StreamReader
?
2 ответа
Вам не нужно создавать файл - у вас уже есть содержимое 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");
Это может быть так просто, как:
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. Вы на самом деле не создаете файл в системе, а вместо этого передаете ответ клиенту.