ajax文件上传超时
Posted
技术标签:
【中文标题】ajax文件上传超时【英文标题】:Timeout when doing ajax file upload 【发布时间】:2016-05-05 04:49:03 【问题描述】:我让用户选择要上传的单个文件。但是在非常奇怪的情况下,上传永远不会完成。
工作用例:页面完成加载后,用户选择一个文件并上传,它总是会上传。
不工作用例:页面加载完成后,用户盯着屏幕一两分钟,然后选择要上传的文件,上传几乎永远不会完成。我们不知道凝视多久就足够了,但通常 2 到 5 分钟就够了。该问题仅出现在 Windows 7 机器上的 IE 11 中。在同一台机器上,Chrome 和 Firefox 运行良好。 IIS Web 服务器不是负载平衡的,但它也发生在负载平衡的环境中。当上传永远不会完成时,期望 POST 的控制器永远不会收到请求,IIS 日志也永远不会收到 POST 请求。
更新: 我发现开发Web服务器是单台服务器,但实际上是在负载均衡环境后面,因为我们的QA环境有两台Web服务器并且负载均衡。话虽如此,看来问题是由负载平衡器引起的。因为如果文件通过节点名称 POST 到服务器 URL,则上传工作。但是如果 POST 到负载均衡器,它会失败。我会看看我的网络人员是否可以找到解决方案。我不认为这是代码问题,还是我错了?
var FormEdit = function ()
var that = ;
that.upload = function ()
var data = new FormData();
var fileInput = $('#fileInput')[0];
var file = fileInput.files[0];
data.append(file.name, file);
$.ajax(
type: 'post',
dataType: 'json',
url: url,
data: data,
processData: false,
contentType: false,
).fail(function ()
).then(function (data)
).always(function ()
);
;
;
【问题讨论】:
如果服务器从未收到请求,则可能是您正在测试它的计算机的问题。你用 IE11 试试另一台电脑吗 是的,我在其他几台具有相同浏览器和操作系统的 PC 上进行了尝试,并且遇到了同样的问题。这是一个企业环境,所以大多数 PC 都是相似的。 介意分享脚本挂钩的触发器吗?还有你用来发送的文件有多大? 【参考方案1】:我解决了问题,但认为这不是最好的方法。
就在我执行 HTTP POST 上传文件之前,我执行 HTTP GET,然后执行 HTTP POST。到目前为止,它一直是这样工作的。
我的网络人说 IE 11 的连接超时为 1 分钟。如果连接超时,您很不走运,只能再次创建新连接以上传文件。
【讨论】:
以上是关于ajax文件上传超时的主要内容,如果未能解决你的问题,请参考以下文章