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, how can a user download a file when they press the "download" button?
The "Download" button has an onClick()
listener. And the client side class extends Composite
.
I've tried to make the class extend HttpServlet
, but it becomes too complicate.
I already read posts here:
But I still don't know how can I provide downloadable file to the user on the client side.
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**
.
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");
}
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With