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

时间:2017-07-02 15:51:04

标签: javascript html5 asynchronous file-upload large-files

我正在构建通过html5&&amp ;;将大型文件上传到服务器的应用程序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.

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

有没有办法立即在浏览器中选择并上传某些文件?  (浏览器完成处理整个文件内容时无需等待)

1 个答案:

答案 0 :(得分:0)

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

就我而言,我试图在MacOS上上传Google Chrome.app以及更多足够大的应用。

但事情是.app不是文件,而是一个引用其内容的文件夹。

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

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