2012-03-06 2 views
2

나는 다소 모호한 문제가 있지만 설명을 위해 최선을 다할 것입니다.Excel에서 IE에서 다운로드 할 파일을 열려고합니다.

우리는 POST 요청이있을 때 다운로드가 트리거 될 수 있도록 SpringMVC를 사용하여 매핑 된 URL을 가지고 있습니다. 예를 들어,

POST /request/bobby.html {POST variables:id=5} 

의 요청이 문제는 IE에서,이 일을하는 것은 당신에게 열기 또는 다른 이름으로 저장 옵션을 제공한다는 것입니다 ID 5. 관련된 CSV 파일의 다운로드를 트리거합니다. Open을 선택하면 MS Excel에서 의도 한대로 CSV 파일이 열리지 만 임시 파일의 이름은 bobby.html이됩니다. 사용자가 Excel을 열어두고 다른 ID (예 : 6)를로드하려고하면 포커스는 Excel로 바뀌지 만 요청은 여전히 ​​bobby.html을 가리키고 있으므로 파일은 새로 고쳐지지 않습니다. 같은 이름의 새 파일이 만들어지기 전에 Excel에서 파일을 닫아야하지만 이전 파일을 닫으라는 메시지는 사용자에게 표시되지 않습니다.

이상적으로 파일 이름을 변경하고 싶지만 사용중인 Spring 서블릿은 다른 확장자가있는 동일한 컨테이너에서 실행되는 다른 응용 프로그램이 있기 때문에 * .html 파일에만 매핑됩니다.

내가 요청 위에 UUID를 추가하는 시도 그냥 엑셀/IE에 다른 보이게하고, 어느 정도 일했다 ...

POST /request/bobby.html?uuid=<uuid> {POST variables:id=6} 

그것이 IE에 다를 만들었지 만, 엑셀 여전히합니다 기본 요청을 파일 이름으로 유지합니다. 이것은 경고를 허용했지만 사용자에게 파일 이름이 "bobby.html"이고 다른 하나를 열 수 없다는 사실을 경고하는 것보다 혼동 스러울 수 있습니다.

POST /request/bobby.html/<uuid> {POST variables:id=6} 

방법이 일을하는 어떤 생각 :

은 또한 마지막에 뭔가를 추가하려고? 이 유형의 것이 SpringMVC에서 실행 가능하다는 것을 알고 있지만 서블릿 매핑을 사용하면 작동하게하는 방법이 있습니까? 사전에

감사합니다.

답변

0

나는 이것에 대한 대답을 마침내 알아 냈고 파일 이름과는 아무런 관련이 없습니다. 응답 헤더 Content-Typeapplication/vnd.ms-excel 대신 application/octet-stream으로 변경했습니다.

0

/request/bobby_{uuid}.html과 같은 매핑을 사용해 보셨습니까? 그렇게하면 매번 파일 이름이 고유 해집니다. 그렇다면 uuid 변수를 무시하면됩니다.

나는 결코 이것을 시도하지 않았다. .. 단지 미쳤던 생각.

+0

이것과 그 변형은 효과가없는 것 같습니다. – Andy

관련 문제