[英]SmartGWT ~ DSRequest download file
我正在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。
您可以執行以下操作:
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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.