Java SmartGWT~DSRequest下载文件

Java SmartGWT~DSRequest下载文件,java,eclipse,gwt,smartgwt,smartgwt-pro,Java,Eclipse,Gwt,Smartgwt,Smartgwt Pro,我正在用smartGWT编写一个服务器端类,它从表中获取一条记录,并从数据库中下载一个二进制blob作为文件。目标是将二进制文件附件下载到本地计算机 有人告诉我,我可以使用DSRequest.getUploadedFile(附件)下载文件,但查看它时,该方法似乎没有从数据库中获取要下载的上载文件,而是获取要上载到数据库的文件 是否有一种方法可以从数据库中获取一个文件,并将其作为服务器端代码的下载返回给用户?我们知道我们可以在客户端代码中做到这一点,但我们希望能够在服务器上做到这一点 下面是如何获

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

有人告诉我,我可以使用
DSRequest.getUploadedFile(附件)
下载文件,但查看它时,该方法似乎没有从数据库中获取要下载的上载文件,而是获取要上载到数据库的文件

是否有一种方法可以从数据库中获取一个文件,并将其作为服务器端代码的下载返回给用户?我们知道我们可以在客户端代码中做到这一点,但我们希望能够在服务器上做到这一点

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

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
    }
}
DSRequest dsReq=新的DSRequest(“表”、“获取”);
dsReq.setCriteria(“criteria”,processFlowData.getVariableMap().get(“critera”);
DataSource ds=dsReq.getDataSource();
DSResponse dsResp=ds.execute(dsReq);
if(dsResp.getStatus()<0){
//处理错误
}否则{
如果(!dsResp.getRecord().isEmpty()){
//在这里下载文件
}
}

我正在使用Eclipse开普勒、SmartGWT、Java EE。

您可以这样做:

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();
}