2017-07-02 65 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獲取這樣的文件是一個毫秒級的問題。