как читать удаленный файл с GWT - PullRequest
4 голосов
/ 27 марта 2010

Мне нужно прочитать файл, расположенный на сервере, но я вижу, что в GWT невозможно использовать какую-либо библиотеку Java. что мне делать?

Ответы [ 3 ]

3 голосов
/ 27 марта 2010

попробуй requestBuilder !! этот код может помочь?

        RequestBuilder requestBuilder = new RequestBuilder( RequestBuilder.GET, "yourfile.txt" );
        try {
            requestBuilder.sendRequest( null, new RequestCallback(){
                public void onError(Request request, Throwable exception) {
                    GWT.log( "failed file reading", exception );
                }

                public void onResponseReceived(Request request, Response response) {
                    String result=response.getText();

                }} );
        } catch (RequestException e) {
            GWT.log( "failed file reading", e );
        }
1 голос
/ 21 апреля 2010

Правило: JavaScript не может считывать данные с URL-адреса, у которого нет имени хоста и порта, соответствующих страницам, на которых работает JavaScript.

Другими словами: если он находится на другом сайте - вы не можете читать его напрямую с помощью JS и, следовательно, GWT, который является не чем иным, как Javascript после компиляции.

Это относится к данным из XMLHttpRequest, фреймам и всем, что вы хотите назвать.

Это может измениться в будущем, но пока действует правило.

Имея это в виду, есть несколько обходных путей.

1) Позвоните на ваш сервер с помощью RPC или любого другого механизма и попросите ваш сервер выполнить запрос, а затем отправить его обратно клиенту. Вот пример .

2) Есть несколько способов взломать JavaScript для доступа к междоменным сайтам, просто выполните поиск в Google, чтобы узнать, как это получить. Некоторые браузеры помечают это как опасное.

3) Если вы используете Firefox и Firefox только, похоже, что Firefox имеет возможность сделать это, но вам нужно будет включить это вручную.

0 голосов
/ 30 мая 2011

Просто напишите сначала сервлет, который отправляет пользователю файл, расположенный на сервере.

Затем, когда пользователь нажимает, например, на кнопку, вы вызываете сервлет с правильным параметром.

Вот выдержка из нашей реализации сервлета

            response.reset();

            response.setContentType("application/octet-stream");
            response.setContentLength(contentLength);
            response.setHeader("Content-disposition", "attachment;
filename=\"" + filename + "\"");
            output = new
BufferedOutputStream(response.getOutputStream());
            int data = input.read();
            while (data != -1)
            {
                output.write(data);
                data = input.read();
            }
            output.flush(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...