用户如何在客户端下载文件(Google Web Toolkit)

Seo*_* So 8 gwt download

我正在使用GWT(Google Web Toolkit)来建立一个网站.我需要向用户显示一个表,并让用户下载表的内容.

在客户端,用户如何在按下"下载"按钮时下载文件?

"下载"按钮有一个onClick()监听器.客户端类扩展Composite.

我试图让类扩展HttpServlet,但它变得太复杂了.

我已在这里阅读帖子:

  1. http://www.mkyong.com/java/how-to-download-file-from-website-java-jsp/
  2. 使用Servlet下载文件时如何使用GWT?

但我仍然不知道如何在客户端向用户提供可下载文件.

app*_*tup 22

您真的需要区分GWT客户端Java代码和服务器端Java代码.

在GWT Java代码的客户端

String url = GWT.getModuleBaseURL() + "downloadService?fileInfo1=" + fileInfo1;
Window.open( url, "_blank", "status=0,toolbar=0,menubar=0,location=0");
Run Code Online (Sandbox Code Playgroud)

在非gwt Java代码的服务器端 -

在web.xml中

<servlet>
    <servlet-name>downloadService</servlet-name>
    <servlet-class>AAA.BBB.CCC.DownloadServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>downloadService</servlet-name>
    <url-pattern>/<gwtmodulename>/downloadService</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

在服务器包代码中有一个servlet

    public class DownloadServlet extends HttpServlet{
    protected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException
        {
            String fileName = req.getParameter( "fileInfo1" );

            int BUFFER = 1024 * 100;
            resp.setContentType( "application/octet-stream" );
            resp.setHeader( "Content-Disposition:", "attachment;filename=" + "\"" + fileName + "\"" );
            ServletOutputStream outputStream = resp.getOutputStream();
            resp.setContentLength( Long.valueOf( getfile(fileName).length() ).intValue() );
            resp.setBufferSize( BUFFER );
            //Your IO code goes here to create a file and set to outputStream//

        }
    }
Run Code Online (Sandbox Code Playgroud)

确保将文件内容推送到**outputStream**.