2012-02-06 2 views
0

У меня есть приложение JSF2, ссылающееся на статические файлы Excel на файловой системе сервера. Ссылка простой HTML, как это:Internet Explorer пытается открыть Excel на сервере Jboss и не удается

<a href="#{bean.getExcelLink(auction)}">Excel File</a> 

Это хорошо работает с Chrome и Firefox, а также на IE, когда приложение работает в Tomcat на моей локальной машине Windows 7. Но когда в промежуточной среде, которая является Linux с Jboss AS 7.0.1 Final, IE пытается открыть файл Excel в своем собственном окне и создает кучу символов мусора.

Опять же, проблема связана только с IE, когда приложение работает в Linux с Jboss AS.

Любая идея о том, что происходит и как ее решить?

ответ

1

По-видимому, тип содержимого ответа является неправильным. Учитывая тот факт, что он не работает в Linux, но преуспевает в Windows, это может означать только то, что для определения типа контента используется определение типа mime для конкретной платформы, а не для сопоставления типов mime-типа для webapp/server (машина Linux, конечно же, не установлен MS Office, поэтому он не очень хорошо осведомлен о типе mime .xls или .xlsx файлах). Это, в свою очередь, может означать, что вы напрямую не связываетесь с ним, но используете общий сервлет для потоковой передачи файла.

Если это правда, то на самом деле вы должны использовать ServletContext#getMimeType(), чтобы определить тип содержимого на основе расширения файла, а не URLConnection#guessContentTypeFromName(), который использует сопоставление типов MIME для конкретной платформы. Сервер имеет свой собственный web.xml предопределенный список всех типов mime по умолчанию в аромате <mime-mapping> записей, которые вы можете переопределить/продлить в собственном веб-магазине web.xml.

+0

Спасибо, что посмотрели на это, BalusC. Я напрямую связываюсь. Ссылка из «источника просмотра» выглядит так: http: // имя_сервера: 8080/res/32-06Feb2012.154159-uploadLots-test% 20lots-3.xls. И эта проблема возникает только с IE. Если я должен пройти через подачу, если код будет работать аналогично тому, как это делается в вашем ответе здесь: http://stackoverflow.com/questions/8991478/action-link-and-download-link-in-one? – Herzog

+0

Если вы напрямую связываетесь, тогда это будет ошибкой на самом сервере JBoss (чего я и не ожидал). Можете ли вы показать заголовки ответов, которые он ответил на запрос в файл XLS? – BalusC

+0

Когда я это делаю, я получаю много мусора под вкладкой HTML Инструментов разработчика (в основном это то же самое, что и на самой странице). На вкладке «Сценарий» есть это, «я», которое, я сомневаюсь, полезно. В любое другое место, куда я должен пойти? Кстати, мой браузер IE8. Должен ли я обновить до 9? – Herzog