Вы полностью упустили смысл того, чего пытался достичь этот вопрос. Во-первых, возвращаемые данные были массивом байтов. Нет имени файла, неявно доступного из файловой системы. И второе: вы не решаете необходимость принудительной загрузки или разрешения просмотра файла в браузере, в зависимости от выбора пользователя / разработчика.

лкнулся с проблемой отправки файлов, хранящихся в базе данных, обратно пользователю в ASP.NET MVC. То, что я хочу, - это представление, в котором перечислены две ссылки: одна для просмотра файла, и пусть mimetype, отправляемый в браузер, определяет способ его обработки, а другая для принудительной загрузки.

Если я решу просмотреть файл с именемSomeRandomFile.bak и браузер не имеет связанной программы для открытия файлов этого типа, тогда у меня нет проблем с тем, что по умолчанию выполняется загрузка. Однако, если я решу просмотреть файл с именемSomeRandomFile.pdf или жеSomeRandomFile.jpg Я хочу, чтобы файл просто открылся. Но я также хочу оставить ссылку для скачивания в стороне, чтобы можно было принудительно вызвать приглашение к загрузке независимо от типа файла. Имеет ли это смысл?

я пыталсяFileStreamResult и он работает для большинства файлов, его конструктор не принимает имя файла по умолчанию, поэтому неизвестным файлам присваивается имя файла на основе URL-адреса (который не знает расширения для предоставления на основе типа содержимого). Если я задаю имя файла, указав его, я теряю возможность браузера открывать файл напрямую и получаю приглашение на загрузку. Кто-нибудь еще сталкивался с этим.

Это примеры того, что я пробовал до сих пор.

//Gives me a download prompt.
return File(document.Data, document.ContentType, document.Name);

//Opens if it is a known extension type, downloads otherwise (download has bogus name and missing extension)
return new FileStreamResult(new MemoryStream(document.Data), document.ContentType);

//Gives me a download prompt (lose the ability to open by default if known type)
return new FileStreamResult(new MemoryStream(document.Data), document.ContentType) {FileDownloadName = document.Name};

Какие-либо предложения?

Ответы на вопрос(8)

Ваш ответ на вопрос