webforms получает HTML в моем файле Excel Response.OutputStream - PullRequest
1 голос
/ 02 июля 2019

Я возвращаю файловый поток из файла S3. Поскольку поток недоступен для поиска, я помещаю его в MemoryStream, чтобы получить длину. Файл загружается в браузер. Когда я открываю файл, я вижу правильные данные CSV, но он также имеет страницу HTML после данных. Не уверен, что мне не хватает.

var streamResult = FileStream(bucket, fileName);

if (streamResult.Stream != null)
{
    //using (StreamReader reader = new StreamReader(streamResult.Stream))
    //using (Stream stream = streamResult.Stream)
    using (var ms = new MemoryStream())
    {
        streamResult.Stream.CopyTo(ms);
        ms.Position = 0;

        //byte[] bytes = System.Text.Encoding.UTF8.GetBytes(ms);

        HttpContext context = HttpContext.Current;
        context.Response.AddHeader("Content-Disposition", "attachment; filename=" + returnFileName);
        context.Response.AddHeader("Content-Type", "application/vnd.ms-excel");
        context.Response.AddHeader("Content-Length", ms.Length.ToString());
        //context.Response.ContentType = "application/octet-stream";
        //context.Response.ClearContent();
        ms.WriteTo(context.Response.OutputStream);
        //context.Response.OutputStream.Write(bytes, 0, bytes.Length);
    }
}

1 Ответ

0 голосов
/ 02 июля 2019

Обновление: просто добавьте context.Response.Flush(); после ms.WriteTo(context.Response.OutputStream);

...