Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML5文件上传-卡在非常大的文件上-仅限Firefox_Javascript_Html_Firefox_File Upload - Fatal编程技术网

Javascript HTML5文件上传-卡在非常大的文件上-仅限Firefox

Javascript HTML5文件上传-卡在非常大的文件上-仅限Firefox,javascript,html,firefox,file-upload,Javascript,Html,Firefox,File Upload,我正在努力让HTML5上传正常工作。到目前为止,我的工作正常,没有任何问题。我遇到的唯一问题如下(仅限Firefox浏览器-Chrome运行良好): 加载页面 尝试上载非常大的文件(超过1GB) 上传需要很长时间才能开始,然后整个过程都搞砸了,似乎上传了两次文件 如果在第1步和第2步之间我上载了一个较小的文件,则大文件将正确开始上载,并显示良好的进度 要体验这一点,您只需在以下演示页面上尝试上述步骤:。演示页面来自一个众所周知的HTML5上传示例:。我不是自己写的,但它的行为与我的脚本相同,并且

我正在努力让HTML5上传正常工作。到目前为止,我的工作正常,没有任何问题。我遇到的唯一问题如下(仅限Firefox浏览器-Chrome运行良好):

  • 加载页面
  • 尝试上载非常大的文件(超过1GB)
  • 上传需要很长时间才能开始,然后整个过程都搞砸了,似乎上传了两次文件
  • 如果在第1步和第2步之间我上载了一个较小的文件,则大文件将正确开始上载,并显示良好的进度

    要体验这一点,您只需在以下演示页面上尝试上述步骤:。演示页面来自一个众所周知的HTML5上传示例:。我不是自己写的,但它的行为与我的脚本相同,并且可以访问

    这是一个浏览器错误吗?以前有人碰到过这个吗


    谢谢

    我不认为这是一个浏览器错误,而是上传程序中的错误。我用上传1GB和2GB文件进行了测试,上传立即开始,根本不需要等待

    确保您的测试有效,但我发现以下意外行为

    案例1:
    1.开始上传1G文件
    2.上传开始正常,进度正常
    3.在完成上传之前,单击浏览并上传2G文件
    4.上载已正常启动,但进程混乱。表现出负速度之类的

    案例二:
    1.开始上传2G文件
    2.上传开始正常,进度正常
    3.在完成上传之前,单击浏览并上传1G文件
    4.上载已正常启动,但进程混乱。表现出负速度之类的

    案例3:
    1.开始上传1G文件
    2.上传开始正常,进度正常。
    3.启动新选项卡并开始上载2G文件
    4.上传开始正常,进度正常

    看起来您的程序没有处理前两个测试用例,看起来不像是浏览器错误


    在文件开始后禁用上载按钮之前,请尝试找出“取消”上载不起作用的原因(如果已实现)。看起来有一些人在客户端用html5取消了文件上传。

    这不是Firefox中的错误,这是您程序中的错误。在Mac上用FF 11.0和Chrome 18.0.1025.151再现了@Ray Cheng的行为。在两个浏览器中都没有重现OP的问题,但我怀疑这是由于程序中的错误反馈导致对正在发生的事情的误解

    Ray的测试显然失败了,因为第二个文件的上载没有取消第一个文件的上载,两个上载正在更新相同的进度条,并使用一些相同的值(例如,上次上载的文件大小)和一些唯一的值(例如,此特定上载完成的字节)。或者类似的。我没有深入研究代码,但我确实发现了这一点(注意,这些变量在全局范围内,但由执行上载的
    XMLHttpRequest
    对象生成的事件更新):

    当前系统的一个明显问题是,如果你开始上传一个大文件,然后又开始上传一个小文件,那么在小文件完成上传后,你会得到如下所示的荒谬反馈,更不用说第一次上传文件失败了。(请注意上载的大小和百分比与上载文件的大小相比。)


    首先,我建议在上传过程中禁用浏览/文件选择按钮,直到解决这些其他问题

    我找到了解决你问题的办法。要上传大文件,您必须使用文件api切片调用丢弃文件;要处理请求,您必须使用webworkers以获得更高的计算性能。

    如果这超出了html5的规范,我不会感到惊讶。只是因为上传一个1GB的文件给普通家庭用户需要很多小时,我也不能模拟这个问题,我现在使用的是OSX Lion上的Firefox11.0。可能问题仅限于赢得Firefox?我使用的是Win FF 10,无法重现OP的问题。OP:您测试的Firefox版本是什么?显然,这只在某些计算机上随机发生。Firefox是Windows7 64位上的V11.0。具有相同版本的另一台计算机将不会显示该行为。对于crisp测试场景为+1。我相信,如果你能简明扼要地说明这些问题在Chrome中重现,并将OP缺乏重新编程与本地化问题联系起来,那么这个答案可以得到极大的改进。你有什么例子或代码吗?这将是一个很大的帮助!
      var bytesUploaded = 0;
      var bytesTotal = 0;
      var previousBytesLoaded = 0;
      var intervalTimer = 0;