2016-04-12 2 views
0

Можно добавить 2 различных заголовков Content-Disposition следующим образом

oResponse.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName_DBText, Encoding.UTF8).Replace("+", "%20")); 
oResponse.AddHeader("Content-Disposition", "inline=" + HttpUtility.UrlEncode(fileName_DBText, Encoding.UTF8).Replace("+", "%20")); 

выше причинял мне вопрос в Chrome только. Нет проблем в IE или Firefox. Удаление 2-го AddHeader (добавление директивы inline) устраняет проблему. У меня создалось впечатление, что добавление обоих было прекрасным, и браузер разработал, что делать. У кого-то есть окончательный ответ на это?

ответ

2

a) нет, вы не можете иметь несколько единиц.

b) недействителен синтаксис для второго; «inline» не принимает параметр.

c) «inline» и «attachment» являются противоречивыми; чего вы пытаетесь достичь?

(спецификация является RFC 6266, кстати)

+0

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

+0

Re. точка A) у нас была программа, позволяющая пользователю щелкнуть ссылку, чтобы просмотреть вложенное приложение, которое было загружено. В приглашении было предложено сохранить/сохранить как/открыть файл, чье имя состояло из страницы aspx и расширения загруженного файла, поэтому, если страница была mypage.aspx, а файл был .xls, это вызвало их для моей страницы. xls, что было ошибкой. Мы хотели отобразить реальное имя файла Так что использование тега content-disposition было способом, но я по ошибке подумал, что мне нужно обслуживать типы файлов diff, используя вложение AND inline. –

+0

Re. точка b), в качестве примера, было бы правильным: если используется inline - response.Headers.Add («Content-Disposition», «inline; filename = myfile.xls»); –

0

Решение было очень простым: Просто извлекал следующую строку кода -

oResponse.AddHeader("Content-Disposition", "inline=" + HttpUtility.UrlEncode(fileName_DBText, Encoding.UTF8).Replace("+", "%20")); 

Как указано @Julian Reschike, вы не можете иметь несколько содержание -disposition, которые я не знал. В любом случае синтаксис указанной строки был неправильным, как и я. Линия удалена и все возвращается к тому, как это должно быть.

Смежные вопросы