使用Gwt的RequestBuilder下载文件

时间:2010-12-15 10:18:12

标签: gwt servlets download gwt-ext

我需要实现文件下载。我不想直接下载任何服务器端文件URL。我创建了一个servlet,它将打开文件并将其写入response.Now来到前面gwt我有onResponseReceived (请求请求,响应响应)将在接收响应时调用。现在如何继续进行? 。我需要的操作是,流中的文件应该下载到客户端计算机。

可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

你试过Window.open(ServletUrl, "_parent", "location=no")吗?

尝试在“application / exe”

的响应中设置内容类型

这将提示用户保存或运行。 Servlet代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String filename = URLDecoder.decode(request.getPathInfo(), "UTF-8");
    File file = new File("/path/to/files", filename);
    response.setContentType("application/x-download");
    response.setHeader("Content-Disposition", "attachment; filename=" + filename);
    response.setHeader("Content-Length", file.length());

    BufferedInputStream input = null;
    BufferedOutputStream output = null;

    try {
        input = new BufferedInputStream(new FileInputStream(file));
        output = new BufferedOutputStream(response.getOutputStream());

        byte[] buffer = new byte[8192];
        for (int length = 0; (length = input.read(buffer)) > 0;) {
            output.write(buffer, 0, length);
        }
    } finally {
        if (output != null) try { output.close(); } catch (IOException ignore) {}
        if (input != null) try { input.close(); } catch (IOException ignore) {}
    }
}

答案 1 :(得分:2)

您可以使用_blank,_parent,_top,_self

中的任何一个
  • “_ blank”属性导致 要打开的超链接的“目标” 一个新的
  • “_ top”属性导致“目标” 要显示的超链接 所有当前定义的顶级 框架集。
  • “_ parent”属性导致 要显示的超链接的“目标” 在当前的整个领域 框架集。
  • “_ self”属性导致“目标” 要打开的超链接 当前框架。

Source

答案 2 :(得分:0)

你可以在没有servlet的情况下使用GWT RPC和Data URIs

  1. 使您的GWT RPC方法返回文件内容或数据以生成文件。
  2. 在客户端,使用收到的文件内容格式化Data URI或生成数据内容。
  3. 使用Window.open打开文件保存对话框,传递格式化的DataURI
  4. 请参阅此参考,以了解Data URI用法:

      

    Export to csv in jQuery