How can a user download a file in client side (Google Web Toolkit)

前端 未结 4 1865
执笔经年
执笔经年 2020-11-30 12:58

I\'m using GWT(Google Web Toolkit) to make a website. I need to show a table to the user, and let the user download the contents of the table.

On the client side, h

相关标签:
4条回答
  • 2020-11-30 13:17

    If you know the path of the file, Code snippet is shown below.

    button.addClickHandler(new ClickHandler()  
    { 
    
        @Overrid
        public void onClick(ClickEvent event) 
        {
            Window.open(GWT.getHostPageBaseURL() + "/file.rar", "name", "enabled");
        }
    });
    
    0 讨论(0)
  • 2020-11-30 13:22

    You REALLY need to distinguish between GWT client side java code and server side java code.

    On the client side in your GWT Java Code

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

    On server side in your non-gwt Java code-

    In 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>
    

    In server package code a 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//
    
            }
        }
    

    Ensure you push your file contents to **outputStream** .

    0 讨论(0)
  • 2020-11-30 13:23

    To complete the answer of number one item in the io part...

    you can refer to this link

    http://www.programcreek.com/2009/02/java-convert-a-file-to-byte-array-then-convert-byte-array-to-a-file/

    or refer to this code

    File file = new File(enter the filepath here)
    FileInputStream fis = new FileInputStream(file);
                    ByteArrayOutputStream bos = new ByteArrayOutputStream();
                    byte[] buf = new byte[1024];
                    try {
                        for (int readNum; (readNum = fis.read(buf)) != -1;) {
                            bos.write(buf, 0, readNum); //no doubt here is 0
                            //Writes len bytes from the specified byte array starting at offset off to this byte array output stream.
                            System.out.println("read " + readNum + " bytes,");
                        }
                    } catch (IOException ex) {
                        System.err.println("unable to convert to bytes");
                    }
                    byte[] bytes = bos.toByteArray();
                    outputStream.write(bytes);
                    outputStream.flush();
                    outputStream.close();
    

    hope it helps!

    0 讨论(0)
  • 2020-11-30 13:37

    You can try ClientIO to read and write files on the client with GWT

    http://www.emitrom.com/blog/client-io

    0 讨论(0)
提交回复
热议问题