2016-01-17 30 views
1

我想通了如何正確地返回PDF,但它需要5 - 等待20秒(具體取決於文件大小),谷歌瀏覽器/微軟邊緣/ Internet Explorer中顯示進度條。返回本地BIG PDF與PHP被視爲工作不正常

$file = 'http://foobar.com/data/users/1/uploads/2342343/signed/protected.pdf'; 
$filename = 'protected'; 
$headers = get_headers($file, 1); 

$fsize = $headers['Content-Length']; 


header('Content-type: application/pdf'); 
header('Content-Disposition: inline; filename="' . $filename . '"'); 
header('Content-Transfer-Encoding: binary'); 
header('Content-Length: ' . $fsize); 
header('Accept-Ranges: bytes'); 

@readfile($file); 

由於加載的啓動速度不夠快,因此要花費很長時間才能顯示結果。我錯過了什麼?我是不是做錯了什麼導致進度條不會立即顯示開始加載PDF? get_headers是否首先下載文件?

或者是返回儘可能以最快的方式一個很大的PDF的最佳方法?

回答

1

我想你應該閱讀流方式文件,沖洗內容部分給客戶端。

我做了一些代碼流的方式來讀取這些天,但我用的是OCI-Lob::read,因爲我的PDF存儲在Oracle數據庫中。我認爲你的文件可能以不同的方式存儲,所以你需要一個不同的實現。就我而言,我每次讀取文件內容1MB。我不是在爲客戶端刷新內容。

我不是PHP是專家,但我認爲你可以採取在flush功能一看就完成加載進度。