ajax下载文档 ClientAbortException: java.net.SocketException: Connection reset by pee
众所周知ajax是使用了浏览器内部的XmlHttpRequest对象来传输XML数据的。既然是Xml的数据传输,那么传输的数据肯定是文本的,而文件上传则需要传输二进制的数据,显然用ajax是不可能的。
这里要说的是用ajax上传文件其实只是类似ajax的那种操作,实际上并没有用到xmlhttprequest对象。从网上找到模拟form提交的方式实现此功能,如下所示:
var form = $("<form>"); //定义一个form表单form.attr('style','display:none'); //在form表单中添加查询参数form.attr('target','');form.attr('method','post');form.attr('action',_url);$('body').append(form); //将表单放置在web中form.submit(); //表单提交
然而这种方式在火狐和IE8中都能正常运行,只有在IE6下总是报如下错误:
ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error
at org.apache.catalina.connector.OutputBuffer.realWri teBytes(OutputBuffer.java:366)
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(B yteChunk.java:403)
at org.apache.catalina.connector.OutputBuffer.doFlush (OutputBuffer.java:311)
at org.apache.catalina.connector.OutputBuffer.flush(O utputBuffer.java:293)
at org.apache.catalina.connector.Response.flushBuffer (Response.java:534)
at org.apache.catalina.core.StandardHostValve.status( StandardHostValve.java:285)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:136)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:825)
at org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.processConnection(Http11Protocol.jav a:743)
at org.apache.tomcat.util.net.PoolTcpEndpoint.process Socket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThr ead.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlR unnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
上网找引起这个错误的原因归纳如下:
①:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;
②:客户关掉了浏览器,而服务器还在给客户端发送数据;
③:浏览器端按了Stop
而很显然我的原因并不符合这三种,应该是与特定的浏览器解析有关,又有解决方法说用IE下载文档时要设置Cache-Control
response.addHeader("Cache-Control", "no-transform, max-age=0");
但是对于我这种情况也没用,然后我试着在IE6的浏览器里直接输入下载地址能正常下载,说明问题出在form提交这种方式上,于是我改成用iframe直接链接的方式,代码如下:
var iframe=$("<iframe style='display:none'>");
$('body').append(iframe);
iframe.attr('src',_url);
OK,解决了,至于为什么用form提交方式不行,网上有人说原因如下:
Stupid ie6.We found the problem and it is not related with java side of code.The problem is because of this html statement in jsp:This statement somehow creates 2 different request with 1 click on ie6, so this makes confusion on java side.
ajax下载文档 ClientAbortException: java.net.SocketException: Connection reset by pee相关推荐
- Tomcat抛出异常:ClientAbortException: java.net.SocketException: Connection
Tomcat抛出异常:ClientAbortException: java.net.SocketException: Connection 参考文章: (1)Tomcat抛出异常:ClientAbor ...
- 最近纠结致死的一个java报错java.net.SocketException: Connection reset 终于得到解决
自从SEOTcs系统11月份24日更新了一下SEO得分算法以来,一直困扰我的一个问题出现了,java的数据job任务,在执行过程中会经常报以下的错误: "2011-12-03 18:00:3 ...
- IO异常 java.net.SocketException: Connection reset
IO异常 java.net.SocketException: Connection reset 参考文章: (1)IO异常 java.net.SocketException: Connection r ...
- Socket java.net.SocketException: Connection reset的解决方案
Socket java.net.SocketException: Connection reset的解决方案 参考文章: (1)Socket java.net.SocketException: Con ...
- CentOS6中连接ftp服务器下载文件时出现了java.net.SocketException: Connection reset
问题描述:连接CentOS6中的ftp服务器下载文件时出现了java.net.SocketException: Connection reset 解决办法: 1.查看防火墙状态,发现防火墙已开启 se ...
- 异常查错java.net.SocketException: Connection reset
异常查错java.net.SocketException: Connection reset 参考文章: (1)异常查错java.net.SocketException: Connection res ...
- JMETER java.net.SocketException: Connection reset 报错解决方案
JMETER java.net.SocketException: Connection reset 报错解决方案 参考文章: (1)JMETER java.net.SocketException: C ...
- java.net.SocketException: Connection reset by peer: socket write error
最近在做自己的毕业设计,名字是"基于Android的校园二手商品交易系统",于是想把电脑作为服务器,以Android手机作为客户端,做一个C/S结构的程序. 可是一开始就遇到了一个 ...
- java网络编程的java.net.SocketException Connection reset异常
一开始学Stream时没注意过write的flush()方法,今天在学网络编程时,注意到了 服务器端: import java.net.*; import java.io.*; public clas ...
最新文章
- kali linux解决:ping: www.baidu.com: 未知的名称或服务(亲测有效)(走了两个弯路,浪费了好多时间)
- 二者取其一(初遇)_网络流
- Android设计模式(九)--外观模式
- 派生类构造的时候一定要调用_为什么骑车的时候一定要带手套?
- 带有JUnit 5支持的Ant 1.10.3发布
- Python 文件读和写
- java enumerator_NSEnumerator使用
- Java应用结构规范
- Ubuntu设置终端相对短路径
- 推荐一个好用的epub转pdf工具
- linux下执行efi文件,在Linux下创建EFI BIOS Grub加载分区
- Cadence学习篇(12) Cadence中使用Pspice进行电路仿真
- 2022最新 Emlog新版导航源码 带用户中心
- 带你了解“不拘一格去创新,别出心裁入场景”的锐捷
- cs231n-assignment3的笔记
- 开关量模块在报警系统中的应用
- UCOSII操作系统(四)--任务管理
- 深耕5G云专网,阿里云祝顺民入选“2022年度5G创新人物”
- 优雅编程之这样重构函数(续),你就“正常”了(二十)
- 什么是毛利润、净利润、纯利润?终于有人说清楚了!
热门文章
- python打印机打印图片_Python综合应用:教你用字符打印一张怀旧风格的照片
- 华为5ipro详细参数使用功能_华为nova5i pro参数配置介绍 华为nova5i pro使用评测
- SpringCloud之Zuul网关服务
- phpstudy php调试,phpStudy vscode 搭建debug调试的教程详解
- java图片上传下载_Java中文件上传下载 --使用Minio
- excel word 网页自动求和
- 一个小码农的四年工作回忆录,阿里内部核心Java进阶手册
- 使用迅雷代替SDK Manager快速下载Android SDK相关
- AIX CPU配置之EC/VP
- 亚马逊ec2 ssh远程登陆