Как скачать XML-файл, используя HttpContext.тока.ответ
я попробовал и скачал с помощью ". xlsx". Он будет загружен в новой вкладке и попросит пользователя, где сохранить конкретный файл.
Но когда я попробовал то же самое для загрузки xml, этого не произошло.
Вот код для файла. xlsx
fileName = downloadFileName + "_" + currentTime + ".xlsx"; System.Web.HttpContext.Current.Response.Clear(); System.Web.HttpContext.Current.Response.ClearContent(); System.Web.HttpContext.Current.Response.ClearHeaders(); System.Web.HttpContext.Current.Response.Buffer = true; System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8; System.Web.HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); System.Web.HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + fileName); System.Web.HttpContext.Current.Response.BinaryWrite(xlPackage.GetAsByteArray()); System.Web.HttpContext.Current.Response.End(); System.Web.HttpContext.Current.Response.SuppressContent = true;
Этот код отлично работает при загрузке для xlsx. Ниже код используется для загрузки для Xml,что я мог бы сделать.
string downloadFileName = "Template_Xml"; string currentTime = DateTime.Now.ToString("ddMMyyyyhhmmss"); fileName = downloadFileName + "_" + currentTime + ".xml"; System.Web.HttpContext.Current.Response.Clear(); System.Web.HttpContext.Current.Response.ClearContent(); System.Web.HttpContext.Current.Response.ClearHeaders(); System.Web.HttpContext.Current.Response.Buffer = true; System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8; System.Web.HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); System.Web.HttpContext.Current.Response.ContentType = "text/xml"; System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + fileName); // Xmldocument creation XmlDocument docConfig = new XmlDocument(); XmlNode xmlNode = docConfig.CreateNode(XmlNodeType.XmlDeclaration, "", ""); XmlElement rootElement = docConfig.CreateElement("User"); docConfig.AppendChild(rootElement); XmlElement environmentElement = docConfig.CreateElement("NAME"); XmlText environText = docConfig.CreateTextNode("ABC" + i); environmentElement.AppendChild(environText); hedder.PrependChild(environmentElement); System.Web.HttpContext.Current.Response.BinaryWrite(docConfig); // It throws a error System.Web.HttpContext.Current.Response.End();
Что я уже пробовал:
Вот код для загрузки XML,
<pre> string downloadFileName = "Template_Xml"; string currentTime = DateTime.Now.ToString("ddMMyyyyhhmmss"); fileName = downloadFileName + "_" + currentTime + ".xml"; System.Web.HttpContext.Current.Response.Clear(); System.Web.HttpContext.Current.Response.ClearContent(); System.Web.HttpContext.Current.Response.ClearHeaders(); System.Web.HttpContext.Current.Response.Buffer = true; System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8; System.Web.HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); System.Web.HttpContext.Current.Response.ContentType = "text/xml"; System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + fileName); // Xmldocument creation XmlDocument docConfig = new XmlDocument(); XmlNode xmlNode = docConfig.CreateNode(XmlNodeType.XmlDeclaration, "", ""); XmlElement rootElement = docConfig.CreateElement("User"); docConfig.AppendChild(rootElement); XmlElement environmentElement = docConfig.CreateElement("NAME"); XmlText environText = docConfig.CreateTextNode("ABC" + i); environmentElement.AppendChild(environText); hedder.PrependChild(environmentElement); System.Web.HttpContext.Current.Response.BinaryWrite(docConfig); // It throws a error System.Web.HttpContext.Current.Response.End();
F-ES Sitecore
В чем же ошибка?
vinodh muthusamy
Ошибка 5 лучший перегруженный метод соответствует ' System.Web.HttpResponse.BinaryWrite(byte []) ' имеет некоторые недопустимые аргументы
Ошибка 6 Аргумент 1: не удается преобразовать из 'System. Xml.XmlDocument' в ' byte[]'
Эти 2 ошибки я получаю
F-ES Sitecore
Посмотрите на документацию для BinaryWrite, и вы увидите, что он принимает только массив байтов в качестве параметра (byte []), а вы передаете XmlDocument. Он не знает, как превратить XmlDocument в массив байтов, поэтому вам придется сделать это самостоятельно. Google "XmlDocument to byte array"
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/7cdd4bf7-3da3-4735-b710-833ff3ffe693/convert-xml-data-to-byte-array?forum=csharpgeneral
Так что это будет что-то вроде
Системы.Веб.Свойство HttpContext.Тока.Ответ.BinaryWrite(Системы.Текст.Кодирование.Кодировке utf8.Метод getbytes(docConfig.OuterXml));