Пользовательский ActionResult для ответа HTTP из нескольких частей?

StackOverflow https://stackoverflow.com/questions/1029157

Вопрос

Я хотел бы ответить на запрос http и файлом txt, и страницей html. Таким образом, клиент может сохранить файл и просмотреть сводную информацию о содержимом этого файла через HTML-страницу.

Поскольку файл генерируется на лету, я должен использовать управление состоянием на сервере для генерации сводки по второму запросу. Я хотел бы избежать этого и обернуть это в один ответ.

Как будет выглядеть пользовательский ActionResult?

Это было полезно?

Решение

Это также обсуждалось здесь на SO .

я ответил так:

  

Нет, составные вложения для   скачать (как в электронном письме) не   поддерживается по соображениям безопасности. Это   называется «загрузка с диска».

     

Обратите внимание, что Gmail обрабатывает это   динамически архивировать файлы. Вы   должен тоже.    http://forums.asp.net/t/1240811.aspx

Я не верю, что какой-либо современный браузер поддерживает multipart / mixed.

Другие советы

Вы можете отправить XML со ссылкой на таблицу стилей XSLT. Браузер может выполнить преобразование и отобразить итоговый вывод HTML.

И пользователь может просто сделать " Файл-> Сохранить как ... " хранить файл XML.

Почему бы не отобразить сводку как обычный просмотр HTML и не предоставить ссылку под этой сводкой, которая указывает на отдельный ActionResult, который возвращает двоичные данные ...

public ActionResult SendFile(int id)
    {
        File file = FileRepository.GetFile(id);
        byte[] fileData = file.FileData.ToArray();
        return File(fileData, file.FileMimeType, file.FileName);
    }

Я провел поиск по этой теме, и, к моему удивлению, похоже, что люди уже сделали это. Я нашел описание здесь , но оно не является общедоступным проверить URI, поэтому я не могу проверить поведение браузера на этом. Также упоминается решение для отправки файла архива клиенту. Но я предполагаю, что это не то, что вы ищете, верно?

Здесь есть другая статья, показывающая пример с несколькими частями ответы. К сожалению, демонстрационный URI, похоже, больше не работает.

Таким образом, ситуация такова: HTTP многокомпонентные ответы могут быть сделаны. Есть клиентские (несколько) библиотек, которые могут обрабатывать их в коде приложения. Поведение браузера нужно проверить ( Вот голос ). Использование этой функции кажется экспериментальным и может быть рекомендовано, только вы можете контролировать оба конца связи, чтобы устранить проблемы взаимодействия.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top