坑死人的,页面不跳转实现按钮点击下载选中文件

前台

请求发起部分

<a id="download" class="mini-button" iconCls="icon-download"  onclick="download();" >下载</a>
js方法实现
//  利用表单提交实现文档下载 页面跳转问题通过   target 属性来控制
function download(){

    var grid = mini.get("datagrid");

    var row = grid.getSelected();

    if(row == null || row == undefined){
        ebapUtils.tipbox({type: "warning", msg:"请选择一个文件进行下载!"});
    }

    var id = row.id;
    var resName = row.resName;
    var resourceType = row.resourceType;

//拼接表单               target  属性控制表单的跳转
    var form = $("<form action='${ctx}/sys/resource/download' method='POST'  target='' enctype='multipart/form-data'></form>");
    var idObj = $("<input type='text' name='id' value='"+id+"' type='hidden'>");
    var resNameObj = $("<input type='text' name='resName' value='"+resName+"' type='hidden'>");
    var resourceType = $("<input type='text' name='resourceType' value='"+resourceType+"' type='hidden'>");

//页面绑定表单
    jQuery(idObj).appendTo(form);
    jQuery(resNameObj).appendTo(form);
    jQuery(resourceType).appendTo(form);
    jQuery(form).appendTo( document.body);

//数据提交,表单移除
    form.submit();
    jQuery(form).remove();

}

后台Controller

/**
 * luhuizhong    你们更需要的可能是一个全栈
 * 利用表单提交的方式实现文件的下载
 * @param id
 * @param resName
 * @param resourceType
 * @param response
 * @param model
 * @return
 * @throws Exception
 */
@RequestMapping(value="{download}")
public String download(@RequestParam("id") Integer id,
                       @RequestParam("resName") String resName,
                       @RequestParam("resourceType") String resourceType,
                       HttpServletResponse response,Model model)throws Exception{

    //封装前台数据进行后台数据回调
    Resource resource = new Resource();
    resource.setId(id);
    resource.setResName(resName);
    resource.setResourceType(resourceType);

    Resource targetResource = resourceService.selectOne(resource);

    String filename = targetResource.getResName();

    //获取二进制数据
    byte [] target = targetResource.getResBinContent();

    //在浏览器下载文件  指定文件的下载类型  
    response.setContentType("application/msword; charset=utf-8");
    response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode(filename,"utf-8"));
    response.setCharacterEncoding("utf-8");

//将文件流响应给前台浏览器
    OutputStream repOut = response.getOutputStream();
    repOut.write(target);
    repOut.close();

    return "redirect:"+adminPath+"/sys/resource/golist?repage";
}




阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭