ajax下载文件
来源:互联网 发布:数据库开发与管理 编辑:程序博客网 时间:2024/05/18 16:57
最近做一个下载文件的工作,主要是用到了spring+echarts,echarts有个导出图片的功能,但是在IE下无法使用,只能通过其他办法去做了,开始通过ajax,结果发现不会弹出下载框,没办法,经过查找资料,发现可以通过form表单来解决,具体如下:
imgUrl = myChart.getDataURL({ type:'png', backgroundColor:'#fff' });
先通过mychart拿到图片的二进制流,在后台通过Base64去转码,
然后通过js创建一个form表单
function downloadfile(){ var form = $("<form>"); //定义一个form表单 form.attr('style','display:none'); //在form表单中添加查询参数 form.attr('target',''); form.attr('method','post');//这里要用post,因为那个imgUrl可能会非常非常大,后台String默认是65535个字符,这个imgUrl可能会超过他N倍 form.attr('action',"自己的action方法"); var input1 = $('<input>'); input1.attr('type','hidden'); input1.attr('name','imgUrl'); input1.attr('value',imgUrl); var input2 = $('<input>'); input2.attr('type','hidden'); input2.attr('name','fileName'); input2.attr('value','我的图片.jpg'); $('body').append(form); //将表单放置在web中 form.append(input1); //将查询参数控件提交到表单上 form.append(input2); //将查询参数控件提交到表单上 form.submit(); //表单提交}// 服务器后台逻辑后台就是通过servlet去进行处理了request.setCharacterEncoding("utf-8");response.reset();response.setCharacterEncoding("utf-8");String imgUrl = request.getParameter("imgUrl");String fileName = request.getParameter("fileName");byte[] buffer = new BASE64Decoder().decodeBuffer(imgUrl.split(",")[1]);// 处理导出文件名乱码问题String agent = request.getHeader("USER-AGENT");if (null != agent && -1 != agent.indexOf("MSIE") || null != agent && -1 != agent.indexOf("Trident") || null != agent && -1 != agent.indexOf("Edge")) {// ie fileName = java.net.URLEncoder.encode(fileName+".jpg", "UTF-8");} else if (null != agent && -1 != agent.indexOf("Mozilla")) {// 火狐,chrome等 fileName = new String((fileName+".jpg").getBytes("UTF-8"), "iso-8859-1");}response.setHeader("Content-type","application/octet-stream");response.setHeader("Accept-Ranges","bytes");response.setHeader("Pragma","no-cache");response.setHeader("Cache-Control","no-cache");response.setHeader("Content-Disposition", "attachment;filename=" + fileName);OutputStream os = response.getOutputStream();os.write(buffer);os.flush();os.close();
0 0
- ajax文件下载
- AJAX文件下载
- Ajax文件下载
- Ajax 文件下载
- ajax 实现 文件下载
- Ajax 文件下载
- ajax 实现文件下载
- AJAX实现文件下载
- Ajax实现文件下载
- ajax实现文件下载
- ajax 下载文件
- AJAX实现文件下载
- ajax下载文件
- Ajax请求下载文件
- AJAX实现文件下载
- AJAX实现文件下载
- ajax下载文件
- jQuery.Ajax下载文件
- Android Camera API2.0下全新的Camera FW/HAL架构简述
- c/c++函数返回局部变量数组
- hdu 1698
- python 正则表达式注意事项和re.match()和re.search()区别
- MySQL学习系列(1) -- MySQL数据库的介绍和快速安装
- ajax下载文件
- setResult(RESULT_OK, intent)回调不执行问题
- 开启Android程序时检测网络与GPS是否打开
- 我不是产品经理-001
- Ubuntu 14.04 LTS 软件安装及卸载
- android中从一个app跳转到另一个app的方法
- Spring Security3 - MVC 整合教程 (初识Spring Security3)
- dojo学习1-HelloDojo!
- UESTC 2016 Summer Training #2 Div.2(未完待续)