Начните загрузку с сервлета через gwt (http get) - PullRequest
1 голос
/ 25 августа 2011

Я хотел бы начать загрузку файла с clickkevent в моем веб-приложении gwt.Поэтому я написал сервлет, который записывает данные на выход и должен начать загрузку.Данные получены через http get.

public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    String data = request.getParameter("data");
    String filename = request.getParameter("filename");
    byte[] streamData = data.getBytes();
    response.setContentType("application/force-download");
    response.setHeader("Content-Disposition", "attachment; fileName="
            + filename + ".csv");
    response.setContentLength(streamData.length);

    ServletOutputStream out = response.getOutputStream();
    out.write(streamData);
    out.flush();
}

В клиенте я запускаю метод get через requestBuilder.sendRequest ():

RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.GET, /download");
requestBuilder.sendRequest("filename=dues&data="+ theDataAsString, new RequestCallback() {

                    @Override
                    public void onResponseReceived(Request request,
                            Response response) {
                        // Anything to do here?
                    }

                    @Override
                    public void onError(Request request, Throwable exception) {
                        exception.printStackTrace();
                        SC.warn("Error while creating export file.");
                    }
                });

Ничего не происходит.Но почему?Разве браузер не должен попросить начать загрузку?

Имеет ли в этом случае значение, если я использую post или get?

Я не хочу использовать что-то вроде

Window.open("/download?data=myData&filename=filename", "_blank", "");

Есть идеи?

1 Ответ

2 голосов
/ 25 августа 2011

На стороне клиента используйте Anchor вместо построителя запросов и вызывайте сервлет напрямую.

...