92

일부 응답에서 적절한 content-type 헤더를 설정하여 스트림을 반환합니다. 내가 찾는 동작은 다음과 같습니다.saveas 대화 상자를 사용하지 않고 응답 파일 이름을 설정하는 방법

  • 브라우저가 지정된 콘텐츠 형식의 콘텐츠를 렌더링 할 수 있으면 브라우저 창에 콘텐츠를 표시해야합니다.

  • 브라우저에서 콘텐츠를 렌더링하는 방법을 모르는 경우 파일 이름이 응답에 제공된 것이 아닌 saveas 대화 상자가 표시되어야합니다.

문제가 내가 가진 내용 - 처리 헤더를 설정 한 경우 :

"첨부 파일, 파일 이름 ="MYFILE.TXT ""

브라우저가 항상 savesas 표시됩니다 대화.

Content-Disposition을 설정하지 않으면 saveas 대화 상자에 사용 된 파일 이름이 내 경우에는 작동하지 않는 URL에 있습니다.

또한 Content-Disposition을 인라인으로 설정했지만 결과는 같습니다.

답변

128

올바른 방법이 될 수 :

Content-Disposition: inline; filename="myfile.txt"

+6

난 당신이 대답을 쓸 때 다시 '널리 지원되지 않습니다'무슨 뜻인지 모르겠어요, 당신은 대신 FUD의 하드 사실을 주어 좋겠 . 나는 IE 6, IE 8, 현대 Chrome, 그리고 현대 Firefox에서 테스트를했으며, 그것들 모두에서 작동합니다. 제가 말할 수있는 한, 요즘은 이것을 사용하는 것이 전적으로 안전합니다. –

+0

내 FireFox 37.0.2 및 Internet Explorer 11.0.18에서 작동하지 않습니다. 다른 이름으로 저장 대화 상자가 나타납니다. 크롬은 작동합니다. – angularsen

+2

사실 그것은 파이어 폭스 37.0.2와 IE 11.0.18 (그냥 테스트)에서 작동합니다. 브라우저가 인라인으로 표시 할 수없는 Content-Type을 사용하고 있습니다. – Patonza

3

기본적으로 가능한지 확실하지 않습니다. 보안 문제로 인해 브라우저는 처리 할 수있는 모든 콘텐츠 유형을 보내지는 않지만 약간의 경우에만 Accept-Encoding을 제공하므로 시나리오에서 많은 도움이되지 않습니다.

아마도 사용자는 자신이 원하는 것을 물어보고 해당 정보를 프로필에 저장할 수 있습니다.