Открытие файла любого расширения в iframe

#c# #asp.net

#c# #asp.net

Вопрос:

У меня есть веб-приложение, в котором мне нужно открывать любые файлы в стандартных форматах, таких как .doc/docx/.csv/.txt/.xls в iframe . Как я могу этого добиться? Я попытался использовать приведенный ниже пример кода, но он открывает не все форматы файлов в iframe. Я получаю некоторую ошибку XML.

 var ext = GetExtension(fileName);
        switch (ext)
        {
            case "pdf":
                Response.ContentType = "Application/pdf";
                break;
            case "htm":
            case "html":
                Response.ContentType = "text/html";
                break;
            case "txt":
                Response.ContentType = "text/plain";
                break;
            case "doc":
                Response.ContentType = "Application/vnd.ms-word";
                break;
            case "xls":
            case "csv":
                Response.ContentType = "Application/vnd.ms-excel";
                break;
            case "ppt":
            case "pps":
                Response.ContentType = "Application/vnd.ms-powerpoint";
                break;
            default:
                Response.ContentType = "Application/unknown";
                break;
        }
        if (Response.ContentType != "Application/unknown")
        {
            Response.Flush();
            Response.WriteFile(fileName);
            Response.End();
        }
  

Комментарии:

1. Одна вещь, которую нужно попробовать, вместо Response.Flush(); использования Response.Clear();

Ответ №1:

попробуйте добавить этот заголовок

 Response.AppendHeader("Content-Disposition", "attachment; filename=file.[EXTENSION]")
  

вы должны заменить точное [РАСШИРЕНИЕ] здесь. как для pdf

 Response.AppendHeader("Content-Disposition", "attachment; filename=file.pdf")
  

и тогда вы также можете написать

 Response.BinaryWrite(File.ReadAllBytes(filename));
Response.Flush();
Response.End();
  

Ответ №2:

Попробуйте

 Response.BinaryWrite(File.ReadAllBytes(filename));
  

Где filename — это полный путь к файлу