2017-07-02 80 views
1

我正在通过html5 & & xhr上传大文件到服务器的应用程序。HTML5 - 上传文件时未在客户端进行处理

因此,当涉及上传图片时,我知道如何做到这一点。

但是,如果你想上传大文件(> 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毫秒的1MB数据。尽管如此,我只是想将原始的二进制数据上传到服务器。

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

回答

0

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

在我的情况下,我试图在MacOS上上传Google Chrome.app和几个足够大的应用程序。

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

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

像8GB大小的电影这样的常规固体文件没有问题 - 通过File API获取这样的文件是一个毫秒级的问题。