2014-10-31 53 views
0

慢下載,所以我有一個大的(1.7mb)jpg文件,我想讓用戶可以下載爲屏幕壁紙。我使用了以下內容:Laravel:使用Response :: download

/** 
* getWallpaper 
* Download the wallpaper in jpg format from above web root 
* 
* @return file 
*/ 
public function getWallpaper() 
{ 
$file = "../downloads/myfile.jpg"; 

$headers = array('Content-Type: image/jpeg'); 

return Response::download($file, 'myfile.jpg', $headers); 
} 

這工作真快我的本地開發服務器上,但需要大約14秒的瀏覽器下載對話框出現我的生產服務器上。 任何想法?可能是服務器級別的設置缺失匹配,如果有的話,我應該查看哪些設置? 感謝您的幫助。 Ollie。

回答

0

萬一有任何人有同樣的問題 - 對我來說竟然是網絡連接問題

在我的工作有關,我仍然得到長時間的延遲出現的下載對話之前,而在家裏看起來差不多。瞬間,我不知道爲什麼!

0

我只是猜測在這裏,但你可以嘗試設置附件和內容類型標題,然後立即致電flush()發送該信息到客戶端,以便它打開對話框。

public function getWallpaper(){ 
    $file = "../downloads/myfile.jpg"; 

    header('Content-Type: image/jpeg'); 
    header('Content-Disposition: attachment; filename="myfile.jpg"'); 

    flush(); 

    return Response::download($file, 'myfile.jpg'); 
} 

在我看來,這感覺有點哈克(和多餘的,因爲我們正在設置,然後再在Response::download設置頭,但如果它的工作原理,你也許可以延長Response類什麼的。

+0

謝謝,但沒有骰子 - 仍然需要12-14秒的下載對話顯示。 – 2014-11-05 12:27:47

+0

嗯......你可以試試在另一臺服務器上?我想知道如果您的本地開發服務器是唯一按預期工作,或者如果您當前的生產服務器是唯一有問題的服務器... – lukasgeiter 2014-11-05 12:30:29

+0

我可能能夠在另一臺服務器上設置某些東西 - 但我一直玩耍,並有更多的消息:如果我嘗試用pdf來做到這一點,它會按預期工作,即下載對話立即顯示在點擊。但是,我也注意到.zip文件與jpg具有相同的緩慢行爲。這是否給你任何線索? – 2014-11-05 13:09:25