SmartGWT ~ DSRequest скачать файл

Я пишу класс на стороне сервера в smartGWT, который извлекает запись из таблицы и загружает двоичный объект в виде файла из базы данных. Цель состоит в том, чтобы загрузить вложенный двоичный файл на локальный компьютер.

Мне сказали, что я могу использовать 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.


person Andrew Pullins    schedule 23.10.2015    source источник


Ответы (1)


вы можете сделать что-то вроде этого:

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();
}
person claudiobosticco    schedule 25.10.2015