При нажатии на кнопку «Открыть документ Word» происходит попытка переподключения к действию контроллера при загрузке. - PullRequest
1 голос
/ 08 марта 2012

У меня есть требование для загрузки файла с сервера, но, если возможно, откройте его. Я сейчас делаю;

Response.AddHeader("Content-Disposition", string.Format("inline; filename={0}", documentFileName));
result = new FileStreamResult(new FileStream(documentFilePath, FileMode.Open), "application/msword");

Я поместил там приложение / msword прямо сейчас, потому что с этим у меня проблема. Когда я нажимаю кнопку «Открыть» в документе word, создается впечатление, что документ выполняет несколько обращений к действию, но сеанса и базы данных нет, поэтому происходит сбой. Когда пользователь запускает это, он видит длинное зависание, наконец появляется слово «Загрузка» и ему нужно отменить его. Документ существует и является действительным, но это нежелательно.

PDF, PNG и т. Д. Скачать нормально. Кто-нибудь может объяснить это поведение и дать мне несколько советов, как я могу это исправить?

Обновление:

Действие в основном выглядит;

[HttpPost]
public FileResult View(int id, int source) 
{
  var document = GetDocumentFromDatabase(id, source);

  documentFilePath = Path.Combine( documentsDirectory, document.Name);
  documentName = document.Name; 

Response.AddHeader("Content-Disposition", string.Format("inline; filename={0}", documentFileName));
result = new FileStreamResult(new FileStream(documentFilePath, FileMode.Open), "application/msword");

return result;
}

Я сократил его, поскольку не могу поделиться подробностями, но полная идея есть.

Ответ:

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

1 Ответ

1 голос
/ 08 марта 2012

Я использую:

 public ActionResult GetAttachment(int id)
        {

            var attachment = _repository.GetAttachByID(id);
            if (attachment != null)
            {
                Response.AppendHeader("Content-Disposition",string.Format("inline; filename={0}",attachment.FileName));
                return File(attachment.File, attachment.MimeType, attachment.FileName);
            }
            else
            {
                return null;
            }                       
        }

С уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...