你真的需要GWT客戶端Java代碼和服務器端Java代碼來區分。
在客戶端在你的GWT的Java代碼
String url = GWT.getModuleBaseURL() + "downloadService?fileInfo1=" + fileInfo1;
Window.open(url, "_blank", "status=0,toolbar=0,menubar=0,location=0");
在服務器端在你的非Java的GWT代碼 -
在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>
在服務器軟件包代碼中,一個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//
}
}
確保您將文件內容推送到**outputStream**
。
來源
2012-12-06 08:52:31
SSR
對於客戶端:'Window.Location.replace(「/ downloadServlet」);' – Chloe