gwt - plugin - repositorio de documentos wordpress
¿Cómo puede un usuario descargar un archivo en el lado del cliente(Google Web Toolkit)? (4)
Estoy usando GWT (Google Web Toolkit) para hacer un sitio web. Necesito mostrarle una tabla al usuario y dejar que el usuario descargue el contenido de la tabla.
En el lado del cliente, ¿cómo puede un usuario descargar un archivo cuando presiona el botón "descargar"?
El botón "Descargar" tiene un oyente onClick()
. Y la clase del lado del cliente extiende Composite
.
Intenté que la clase extendiera HttpServlet
, pero se vuelve demasiado complicado.
Ya leí publicaciones aquí:
- http://www.mkyong.com/java/how-to-download-file-from-website-java-jsp/
- ¿Cómo usar GWT al descargar archivos con un servlet?
Pero todavía no sé cómo puedo proporcionar un archivo descargable al usuario en el lado del cliente.
Para completar la respuesta del ítem número uno en la parte io ...
puedes consultar este enlace
o consulte este código
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();
¡Espero eso ayude!
Puede probar ClientIO para leer y escribir archivos en el cliente con GWT
Si conoce la ruta del archivo, a continuación se muestra el fragmento de código.
button.addClickHandler(new ClickHandler()
{
@Overrid
public void onClick(ClickEvent event)
{
Window.open(GWT.getHostPageBaseURL() + "/file.rar", "name", "enabled");
}
});
REALMENTE necesita distinguir entre el código Java del lado del cliente GWT y el código java del lado del servidor.
Del lado del cliente en tu código GWT Java
String url = GWT.getModuleBaseURL() + "downloadService?fileInfo1=" + fileInfo1;
Window.open( url, "_blank", "status=0,toolbar=0,menubar=0,location=0");
Del lado del servidor en su código Java no gwt
En 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>
En el código del paquete del servidor, un 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//
}
}
Asegúrese de insertar el contenido de su archivo en **outputStream**
.