У меня есть требование для загрузки файла с сервера, но, если возможно, откройте его. Я сейчас делаю;
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 открывается в браузере еще потому, что я установил его в строку.