0

我正在从包含我在通用处理程序中处理的 xml 的用户文件中读取一个文件,然后将其传递给客户端。

我遇到的问题是当我将 xml 字符串传递给客户端时。它的格式不正确。"<xml 1.0>"通过客户端代码查看它时,它会完全删除根标记和 标记。

我正在寻找一些代码来保持 xml 字符串在到达客户端时保持原样。

我正在从System.IO服务器上使用的文件中读取 xml ..

public void ProcessRequest(HttpContext context)
{
    if (context.Request.Files.Count > 0)
    {
        string path = context.Server.MapPath("~/Temp");
        if (!Directory.Exists(path))
            Directory.CreateDirectory(path);

        var file = context.Request.Files[0];

        string fileName;

        if (HttpContext.Current.Request.Browser.Browser.ToUpper() == "IE")
        {
            string[] files = file.FileName.Split(new char[] { '\\' });
            fileName = files[files.Length - 1];
        }
        else
        {
            fileName = file.FileName;
        }

        string strFileName = fileName;
        fileName = Path.Combine(path, fileName);
        file.SaveAs(fileName);
        string msg = File.ReadAllText(fileName);
        File.Delete(fileName);

        context.Response.Write(msg);
    }
}

xml 总是从“Gambardella ...”开始,由于某种原因,它在发送给cient 时无法读取文件的开头。

这是示例 xml 的图像。

在此处输入图像描述

数据很好地从处理程序中发送出去,但客户端切断了最重要的信息。看起来我正在使用的插件正在存储(或获取)来自 iframe 的数据。iframe 可能是切断开头 xml 的罪魁祸首吗?

我正在使用的示例客户端代码在这里

4

1 回答 1

4

您可以简单地使用Response.WriteFile, 而不是读取文件然后发送它。

Response.WriteFile(fileName);

这将返回具有正确 HTTPContent-Type标头的文件内容。如果文件有 XML 声明,它不会删除它。


类似以下的内容,基于您的代码且未经测试(没有 a MemoryStream,因为在这种情况下不需要):

var file = context.Request.Files[0];
file.InputStream.CopyTo(context.Response.OutputStream)
于 2012-12-24T18:29:54.213 回答