后台java,前台extjs文件下载

前台:

function _loadFilesFjContent() {

var records = Ext.getCmp('filesFjPanel').getSelectionModel().getSelection();

if (records.length == 0) {

Ext.MessageBox.alert('操作信息', '请选择附件');

return;

}

if (records.length > 1) {

Ext.MessageBox.alert('操作信息', '请只选择一个附件');

return;

}

window.open("loadFilesFjContent.do?A_A_ID'), "_blank", "width=40,height=30,resizable=yes,scrollbars=yes");

}

后台:

控制层:

@RequestMapping(value = "loadFilesFjContent")

public void loadFilesFjContent(String A_ID, HttpServletRequest request, HttpServletResponse response, HttpSession session) {

try {

Map<String, Object> operator = getOperator(session);

Map<String, Object> filesFj = filesFjService.loadFilesFj(A_ID, operator);

InputStream inputStream = filesFjService.loadContent(A_ID, operator);

response.reset();

String fileName = URLEncoder.encode((String) filesFj.get("FNAME"), "UTF-8");

response.setHeader("Content-Disposition", "attachment; filename=" + fileName);

ServletOutputStream out = response.getOutputStream();

byte[] content = new byte[65535];

int length = 0;

if (inputStream != null) {

while ((length = inputStream.read(content)) != -1) {

out.write(content, 0, length);

}

}

out.flush();

out.close();

}

catch (Exception e) {

logger.error(e.getMessage(), e);

}

}

服务层:

@Override

public InputStream loadContent(String A_ID, Map<String, Object> operator) {

String sql = "select FCONTENT from FILES_FJ where A_ID = ?";

return oaJdbcTemplate.queryForObject(sql, new Object[] { A_ID }, new ParameterizedRowMapper<InputStream>() {

public InputStream mapRow(ResultSet rs, int rowNum) throws SQLException {

return rs.getBinaryStream(1);

}

});

}