隐藏form表单下载文件
来源:互联网 发布:java 架构师 编辑:程序博客网 时间:2024/04/28 17:26
下载文件操作
java contorller代码
@RequestMapping ("/downloadZIPFile") @ResponseBody public void downloadZIPFile (HttpServletRequest request, HttpServletResponse response) { InputStream in = null; OutputStream out = null; try { request.setCharacterEncoding ("utf-8"); String filePath = request.getParameter ("filePath");//获得文件路径 String fileName = request.getParameter ("fileName");//获得要下载的文件名 File file = new File (filePath); response.setHeader ("Content-type", "text/html;charset=UTF-8"); response.setCharacterEncoding ("utf-8");//设置编码集,文件名不会发生中文乱码 response.setHeader ("Content-Disposition", "attachment;filename=" + fileName); in = new FileInputStream (file); out = response.getOutputStream (); byte[] buffer = new byte[1024]; int len = 0; while ((len = in.read (buffer)) > 0) { out.write (buffer, 0, len); } } catch (Exception e) { if (e instanceof IOException) { e.printStackTrace (); _logger.error ("文件下载发生异常!", e); } else if (e instanceof UnsupportedEncodingException) { e.printStackTrace (); _logger.error ("设置编码格式发生异常!", e); } else { e.printStackTrace (); _logger.error ("文件下载发生异常!", e); } } finally { try { in.close (); out.flush (); out.close (); } catch (IOException e) { e.printStackTrace (); } } }
js代码
//我这是点击datagrid的某一行,先生成文件,再下载文件的,所以有了文件名与路径;
function downloadFile(actoinURL,filePath,fileName){var form = $("<form>"); $('body').append(form); form.attr('style','display:none'); form.attr('target',''); form.attr('method','post'); form.attr('action',actoinURL);//下载文件的请求路径 var input1 = $('<input>'); input1.attr('type','hidden'); input1.attr('name','filePath'); input1.attr('value',filePath); form.append(input1); var input2 = $('<input>'); input2.attr('type','hidden'); input2.attr('name','fileName'); input2.attr('value',fileName); form.append(input2); form.submit(); };
对了,我在网上查过,说是ajax不能做下载文件操作!
ajax不能实现文件下载的原因:
那是因为response原因,一般请求浏览器是会处理服务器输出的response,例如生成png、文件下载等,然而ajax请求只是个“字符型”的请求,即请求的内容是以文本类型存放的。文件的下载是以二进制形式进行的,虽然可以读取到返回的response,但只是读取而已,是无法执行的,说白点就是js无法调用到浏览器的下载处理机制和程序。
阅读全文
0 0
- 隐藏form表单下载文件
- 页面隐藏form下载文件
- 模拟form表单同步方式下载文件
- form表单 下载
- jQuery实现文件下载( 隐藏表单实现ajax下载 )
- form表单下载文件成功返回值得问题
- form表单上传文件
- form表单上传文件
- Form表单文件上传
- form表单文件上传
- form表单上传与下载
- form表单增加datagrid隐藏域
- form下载文件,指向iframe ,如何判断iframe加载完成 form.submit之后的事件问题 监听form表单下载文件是否完成
- 使用Form表单上传文件
- form表单,AJAX上传文件
- form表单上传文件、图片
- form表单多文件上传
- form表单文件上传方法
- APACHE服务器出现No input file specified.的完美解决方案
- 虚继承与虚函数继承
- 【Java】多线程 语法 使用
- PHP正则提取或替换img标记属性
- Attribute
- 隐藏form表单下载文件
- LEMP环境搭建(ubuntu16.04(ubuntu14.04)+nginx+mysql5.7+php7.1)
- OSI,TCP/IP网络模型
- 冒泡排序
- 结构体
- 支付宝支付接口的使用
- C/C++之回调函数---函数指针的作用
- Netty系列之Netty高性能之道
- ubuntu下找搭建好php服务器解决外网访问问题