使用Servlet下载文件时如何使用GWT?

我正在创建一个简单的项目,允许我使用gwt上传和下载文件。 我在下载服务器上的文件时遇到问题。

对于文件上传,我使用了http://code.google.com/p/gwtupload/并按照其中的说明操作。 我的文件存储在网站容器外部的服务器上(在硬盘上),

现在,在下载文件时,我希望用户按下下载按钮,当前选择的任何项目都将下载。 我真的不知道如何做到这一点

我知道我需要一个下载servlet

public class DownloadAttachmentServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub super.doGet(req, resp); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String fileName = (String) req.getSession().getAttribute("fileName"); YFUser user = (YFUser) req.getSession().getAttribute(TestServiceImpl.SESSION_USER); if (user == null) throw new ServletException("Invalid Session"); InputStream in = null; OutputStream out = resp.getOutputStream(); FileInputStream fIn = new FileInputStream(fileName); byte[] buffer = new byte[4096]; int length; while ((length = in.read(buffer)) > 0){ out.write(buffer, 0, length); } in.close(); out.flush(); } } 

目前我将传递一个fileName字符串来检索要测试的文件

现在我迷失了在客户端做什么,我有一个简单的

 public class DownloadFilePanel extends Composite { public DownloadFilePanel(final YFUser user , final String fileName){ final Element downloadIframe = RootPanel.get("__download").getElement(); VerticalPanel content = new VerticalPanel(); content.add(new Label("Download For this File : " + fileName)); Button button = new Button("Download"); button.addClickHandler(new ClickHandler(){ @Override public void onClick(ClickEvent event) { // i do not know what to do here }); content.add(button); initWidget(content); } } 

上面是一个简单的小部件,它将提供一个允许基于fileName下载文件的面板

正如您在上面所看到的,我不知道该怎么做才能下载该文件

有没有人可以指出我正确的方向?

在客户端,只需创建一个常规的标记。 如果要动态创建它,可以使用Anchor类。 当用户单击该链接时,浏览器将自动下载该文件。