[英]Laravel: Slow download using Response::download
所以我有一個很大的(1.7mb)jpg文件,我想允許用戶下載它作為屏幕牆紙。 我正在使用以下內容:
/**
* 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秒鍾,瀏覽器下載對話框才會出現在我的生產服務器上。 有任何想法嗎? 服務器級別的設置可能不匹配,如果是,我應該查看哪些設置? 謝謝你的幫助。 奧利。
我只是在猜測,但是您可以嘗試設置附件和內容類型標頭,然后立即調用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
類或其他方法。
以防萬一有人遇到相同的問題-對我來說,這原來是網絡連接問題。
在我的工作連接上,下載對話框出現之前我仍然要等待很長時間,而在家里卻幾乎立即出現。 我不知道為什么!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.