我正在构建通过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数据。但是,我只想将原始的二进制数据上传到服务器。
有没有办法立即在浏览器中选择并上传某些文件? (浏览器完成处理整个文件内容时无需等待)
答案 0 :(得分:0)
仅在处理特定文件时才会出现此问题。
就我而言,我试图在MacOS上上传Google Chrome.app
以及更多足够大的应用。
但事情是.app
不是文件,而是一个引用其内容的文件夹。
因此,每当我选择这种file
我的浏览器(或系统,不确定)时,会自动创建应用程序所有内容的zip版本。这是消耗时间的地方。
常规实体文件(如8 GB大小的电影)没有问题 - 通过File API
获取此类文件只是毫秒级问题。