Я хочу загрузить файл XML на С#, который я создал с помощью XmlWriter.Create() в пользовательской системе.

У меня есть способ создать файл XML и сохранить его по нужному пути к файлу. Это работает отлично. Но проблема, с которой я столкнулся, заключается в том, что я должен разрешить пользователю загружать этот файл, но он загружается на сервер по заданному пути к файлу, а не в системе пользователя.

У меня есть следующий код для того же

        var dateString1 = DateTime.Now.ToString("yyyyMMddHHmmss");

        XmlWriterSettings settings = new XmlWriterSettings
        {
            Indent = true,
            IndentChars = (" "),
            ConformanceLevel = ConformanceLevel.Fragment,
            CloseOutput = true,
            OmitXmlDeclaration = true
        };

        using (XmlWriter writer = XmlWriter.Create(filePath + "bill" + dateString1 + ".xml", settings))
        {                
            writer.WriteStartElement("HEADER");
            .......Some more Code..............
            writer.WriteEndElement(); //HEADER
            writer.Flush();
        }
        return Json(1, JsonRequestBehavior.AllowGet);

Мне нужно, чтобы созданный файл автоматически загружался в систему пользователя, когда он его запрашивает, и другого файла не создается.

Спасибо.


person Anuj Kumar Chaudhary    schedule 05.12.2019    source источник
comment
Если сетевая папка является общей, вы сможете изменить filePath на сетевую папку.   -  person jdweng    schedule 05.12.2019
comment
попробуйте этот stackoverflow.com/questions/9541351/   -  person eyal    schedule 05.12.2019


Ответы (1)


В вашем контроллере:

var fileContent = System.IO.File.ReadAllBytes(filePath + "bill" + dateString1 + ".xml");
return File(fileContent , System.Net.Mime.MediaTypeNames.Text.Xml, "bill" + dateString1 + ".xml");

ОБНОВИТЬ. Без создания файла:

byte[] fileContent;
using (var ms = new MemoryStream())
{
    using (XmlWriter writer = XmlWriter.Create(ms, settings))
    {
        writer.WriteStartElement("HEADER");
        //.......Some more Code..............
        writer.Flush();
    }
    fileContent = ms.GetBuffer();
}

return File(fileContent , System.Net.Mime.MediaTypeNames.Text.Xml, "bill" + dateString1 + ".xml");
person Нетерпеливый иг&    schedule 05.12.2019
comment
Спасибо. Это помогло. Но это было не совсем то, что я хотел, но работает. Теперь у меня есть копия каждого файла, сгенерированного на сервере. Покажите, пожалуйста, какой другой способ сделать так, чтобы файлы сначала не сохранялись на сервере, а только скачивались. - person Anuj Kumar Chaudhary; 06.12.2019
comment
@AnujKumarChaudhary, я дополнил свой ответ. - person Нетерпеливый иг&; 06.12.2019
comment
Это работает отлично, спасибо. Но добавляет ко многим <0x00> в конце файла. Есть идеи, почему? - person Anuj Kumar Chaudhary; 10.12.2019