java – 使用GWT下载动态文件
发布时间:2020-12-14 05:23:33 所属栏目:Java 来源:网络整理
导读:我有一个GWT页面,用户输入数据(开始日期,结束日期等),然后这个数据通过RPC调用进入服务器.在服务器上,我想用POI生成Excel报表,让用户将该文件保存在本地机器上. 这是我的测试代码,将文件流式传输回客户端,但由于某些原因,我认为当我使用RPC时,不知道如何将文
我有一个GWT页面,用户输入数据(开始日期,结束日期等),然后这个数据通过RPC调用进入服务器.在服务器上,我想用POI生成Excel报表,让用户将该文件保存在本地机器上.
这是我的测试代码,将文件流式传输回客户端,但由于某些原因,我认为当我使用RPC时,不知道如何将文件流式传输到客户端: public class ReportsServiceImpl extends RemoteServiceServlet implements ReportsService { public String myMethod(String s) { File f = new File("/excelTestFile.xls"); String filename = f.getName(); int length = 0; try { HttpServletResponse resp = getThreadLocalResponse(); ServletOutputStream op = resp.getOutputStream(); ServletContext context = getServletConfig().getServletContext(); resp.setContentType("application/octet-stream"); resp.setContentLength((int) f.length()); resp.setHeader("Content-Disposition","attachment; filename*="utf-8''" + filename + ""); byte[] bbuf = new byte[1024]; DataInputStream in = new DataInputStream(new FileInputStream(f)); while ((in != null) && ((length = in.read(bbuf)) != -1)) { op.write(bbuf,length); } in.close(); op.flush(); op.close(); } catch (Exception ex) { ex.printStackTrace(); } return "Server says: " + filename; } } 我已经在互联网上的某个地方看过,你不能用RPC做文件流,我必须使用Servlet.有没有关于如何使用Servlet以及如何从ReportsServiceImpl调用该servlet的示例.我真的需要制作一个servlet,或者可以使用我的RPC将其流式传输? 解决方法
你必须做一个常规的Servlet,你不能从ReportsServiceImpl流二进制数据.此外,没有办法从ReportsServiceImpl调用servlet – 您的客户端代码必须直接调用servlet.
在客户端,您必须使用通过查询字符串传递的参数创建一个正常的锚点链接.像< a href =“http://myserver.com/myservlet?parm1 = value1& ..”< / a> ;. 在服务器端,将您的代码移动到标准的Servlet,而不是从RemoteServiceServlet继承.从请求对象读取参数,创建excel并将其发送回客户端.浏览器将自动弹出文件下载对话框. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Java虚拟机的Heap监狱(JVM、新生代、Minor GC、老年代、Fu
- java – 如何翻转像素图以绘制到libgdx中的纹理?
- Writing Images to the Excel Sheet using PHPExcel--转载
- Java限制
- java – Spring在运行时添加外部spring上下文
- 基于java类路径classpath和包的实例讲解
- java – Tomcat内存使用量在IDLE中增长
- java四大名著及idea常用插件
- java – 包含180个POM的Maven项目 – 这是代码味道吗?
- java – 当xercesImpl.jar位于类路径上时,NetBeans Web服务