0

我正在 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。

4

1 回答 1

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();
}
于 2015-10-25T15:12:16.923 回答