HTML5 - 上传文件而不在客户端处理

HTML5 - upload file without processing it on client side

我正在构建通过 html5 && xhr.

将大文件上传到服务器的应用程序

所以,当涉及到上传图片时,我知道该怎么做。

但是如果要上传大文件(>100 MB),就用户体验而言非常糟糕

表格:

<input type="file" id="input">
<script>
    input.addEventListener('change', function () {
        console.log('changed');
    });
</script>

期望:

1) Select file of 400 MB.
2) 'onchange' event fired.
3) Upload file via XHR and show progress.

问题:(在我的 MacBook Air 上测试,Chrome 59)

1) Select file of 360 MB weight.
2) Get stuck somewhere for 1 min.
3) Event 'onchange' fired.

根据我的观察,浏览器处理 1 MB 的数据大约需要 166 毫秒。不过,我只想将原始二进制数据上传到服务器。

有没有办法只 select 并立即在浏览器中上传一些文件? (无需等待浏览器处理完整个文件内容)

只有在处理特定文件时才会出现此问题。

就我而言,我试图在 MacOS 上上传 Google Chrome.app 和一些足够大的应用程序。

但问题是 .app 不是文件,而是引用其内容的文件夹。

因此,每次我 select 这种 file 我的浏览器(或系统,不确定)会自动创建应用程序所有内容的 zip 版本。这就是耗费时间的地方。

常规实体文件(如 8 GB 的电影)没有问题 - 通过 File API 获取此类文件是毫秒级的问题。