Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Передача файла клиенту


Автор: zer 11.5.2006, 15:05
Добрый день!
Есть сервлет, который формирует отчет и сохраняет его в файле типа .csv
Сам файл сохраняю в %TOMCAT_HOME%/webapps/myappl , тогда его URL будет таким:
http://HOSTNAME/myappl/file.csv
На jsp-странице вставляю ссылку: <a href="file.csv">Отчет</a>

Вроде бы все работает, при нажатии на ссылку firefox предлагает открыть его или сохранить на диск. А IE просто открывает его в своем окне. Как сделать так что-бы он тоже предлагал "открыть с помощью\сохранить"?
 

Автор: Stampede 11.5.2006, 22:14
Цитата(zer @  11.5.2006,  06:05 Найти цитируемый пост)
Вроде бы все работает, при нажатии на ссылку firefox предлагает открыть его или сохранить на диск. А IE просто открывает его в своем окне.


Для этого нужно, чтобы содержимое файла шло с указанием правильного MIME type (HTTP заголовок Content-Type). Чтобы Tomcat правильно его указывал, нужно добавить тип CSV в конфигурацию дефолтного сервлета. Для этого:
  • Зайди в директорию %TOMCAT_HOME%/conf
  • Открой файл web.xml
  • Найди секцию со списком mime-mapping
  • Добавь такую запись:

Код

    <mime-mapping>
        <extension>csv</extension>
        <mime-type>text/csv</mime-type>
    </mime-mapping>


В принципе IE должен понять, что файл нужно сохранить на диске. Если не поможет, попробуй альтернативные типы: http://en.wikipedia.org/wiki/Comma-separated_values#MIME_type

Если совсем ничего не поможет, то придется возиться с HTTP заголовком Content-Disposition (например, при помощи фильтра).

Да, ну и по результатам хорошо бы отчитаться, а то нам тоже интересно smile
 

Автор: zer 12.5.2006, 08:52
Спасибо, помогло! 
Добавил в web.xml 
Код

<mime-mapping>
<extension>csv</extension>
<mime-type>text/csv</mime-type>
</mime-mapping>


Теперь IE спрашивает что делать с этим csv.
  

Автор: Tony 12.5.2006, 09:36
Ещё можно через Attachment. 

Автор: tux 12.5.2006, 09:44
Цитата(Tony @  12.5.2006,  14:36 Найти цитируемый пост)
Ещё можно через Attachment.  

Это как? 

Автор: Tony 12.5.2006, 14:28
res.setHeader("Content-disposition","attachment; filename=" +"Example.pdf" );
Появиться окно save/open
 

Автор: ALKS 12.5.2006, 14:45
это кстати интерсная тема. потому что если правильно выставить MIME тайп, браузер может попытаться найти в системе соответсвующее приложение и сразу открыть документ в нем. ну скажем doc файл сразу в ворде а pdf в акропат ридере. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)