2015-10-23 8 views
0

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

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

ответ

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

 Смежные вопросы

  • Нет связанных вопросов^_^