Разобрать локальный файл в gwt

Я разрабатываю свое первое приложение в GWT. У меня есть случай, когда пользователь загружает файл, приложению необходимо проанализировать файл и показать его содержимое в пользовательском интерфейсе. Затем пользователь может подтвердить правильность данных, а затем нажать «сохранить», чтобы загрузить содержимое на сервер. Как я могу добиться этого, это GWT? Я наткнулся на некоторые сообщения: Как читать локальный (клиентский) файл с GWT? Читать текстовый файл в Google GWT? Чтение очень большого локального XML-файла с использованием GWT

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

P.S. В моем приложении есть опция отмены. Таким образом, пользователь может нажать кнопку «Отмена», даже после того, как он выберет файл. Поэтому я не хочу делать вызов сервера, пока он не нажмет «Сохранить».


person Karthik207    schedule 20.07.2014    source источник


Ответы (1)


То, что вы хотите сделать, требует современных браузеров, поддерживающих html5 file-api (почти браузеры в настоящее время даже IE10+), в противном случае вам всегда нужно загружать файлы на сервер перед их визуализацией или обработкой.

Для прямой обработки файлов на стороне клиента вы можете использовать lib-gwt-file, там это не столько документация о том, как использовать библиотеку, сколько javadocs. Существует проект sample, который вы также можете использовать в качестве справки, взгляните к живой демонстрации.

Если вам нужна поддержка IE9, вы должны использовать подход на стороне сервера, gwtupload облегчает работу, поскольку позволяет из коробки добавлять и удалять временные файлы для сеанса сервера, прежде чем вы фактически отправите свой запрос ajax для сохранения данных.

person Manolo Carrasco Moñino    schedule 20.07.2014
comment
Можно ли добиться в GWT без использования каких-либо внешних библиотек? - person Karthik207; 20.07.2014
comment
Конечно, lib-gwt-файл написан на GWT, так что можно было бы, но, следуя принципу DRY, я бы не стал повторять работу, проделанную другими :-). Если вы уверенно писать jsni, это ваш вариант. Вы можете использовать Elemental, хотя он и является частью gwt, но является экспериментальным и работает только для браузеров хром. - person Manolo Carrasco Moñino; 20.07.2014
comment
Я новичок в GWT, и мне не очень удобно работать с JSNI.lib-gwt-file — это лицензионный продукт? или он поставляется вместе с плагином gwt? Можете ли вы дать мне более подробную информацию об этом файле lib-gwt?? - person Karthik207; 20.07.2014
comment
Да, это нормально, мы, люди, использующие gwt, не хотим иметь дело с jsni или js, что вызывает непредвиденные ошибки, мы согласны с java и доверяем сторонним библиотекам java для gwt. lib-gwt-file находится под лицензией GNU Lesser. Я не понимаю ваш второй вопрос, gwt - это не плагин, а SDK для создания javascript, который запускается в любом браузере из java. lib-gwt-file — это не плагин, а java-библиотека, предназначенная для gwt. Я не вносил свой вклад в lib-gwt-file, но знаю, что он хорошо поддерживается и хорошо работает. Документации не так много, кроме погружения в код и примеры. - person Manolo Carrasco Moñino; 20.07.2014