SmartGWT~DSRequest下载文件

时间:2015-10-23 14:04:26

标签: java eclipse gwt smartgwt smartgwt-pro

我正在smartGWT中编写一个服务器端类,它从表中获取记录并从数据库中下载二进制blob作为文件。目标是将二进制文件附件下载到本地计算机。

有人告诉我,我可以使用DSRequest.getUploadedFile(attachment)下载文件但是查看它,看起来好像这个方法没有从数据库中获取上传的文件进行下载,而是获取要上传到数据库的文件

有没有办法可以从数据库中获取文件并将其作为服务器端代码下载返回给用户?我们知道我们可以在客户端代码中执行此操作,但我们希望能够在服务器上执行此操作。

以下是我如何获取包含我要发送给用户的文件的记录。

DSRequest dsReq = new DSRequest("table", "fetch");
dsReq.setCriteria("criteria", processFlowData.getVariableMap().get("critera"));

DataSource ds = dsReq.getDataSource();
DSResponse dsResp = ds.execute(dsReq);

if (dsResp.getStatus() < 0) {
    //Handle Errors
} else {
    if (!dsResp.getRecord().isEmpty()) {
        //Download File Here
    }
}

我正在使用Eclipse Kepler,SmartGWT,Java EE。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

public static void downloadFile(DSRequest dsRequest, RPCManager rpcManager, HttpServletResponse servletResponse) throws Exception {
    rpcManager.doCustomResponse();
    ServletOutputStream outputStream = servletResponse.getOutputStream();
    servletResponse.addHeader("Content-disposition", "attachment; filename=test.pdf");
    servletResponse.setContentType("application/x-www-form-urlencoded");
    OutputStream responseOutputStream = servletResponse.getOutputStream();
    // write file to responseOutputStream
    responseOutputStream.flush();
    responseOutputStream.close();
}