2012-12-14 28 views
1

我試圖製造類似的FTP。我有一個自制的服務器,應用程序設置爲wamp。 而我不想保留所有我的文件在wamp文件夾中,所以我也從本應用程序訪問本地文件。錯誤324 EMPTY_RESPONSE而回聲的file_get_contents

已經閱讀了大量的工作人員,我不能做到這一點,沒有瀏覽器讓我做這樣的事情。但我以某種方式管理它。

這是我用它來下載文件的代碼:

function getFile($name,$path) { 
    if(file_exists($path.$name)) { 
     $name = urldecode($name); 
     $fsize = filesize($path.$name); 

     header("Content-disposition: attachment; filename=\"".$name."\""); 
     header("Content-type: application/force-download"); 
     header("Content-length: ".$fsize); 

     echo file_get_contents($path.$name); 
    } 

而且它無論在一家小文件,他們已經得到了擴展,但我也有一些下載.exe文件超過200MB。

我已經設置memory_limit的在php.ini淡然,這是第一個麻煩我已經得到的原因,但現在我得到的錯誤:324。

任何想法如何克服它?

+0

它甾體抗炎藥在你的代碼'file_put_contents'? –

回答

0

的file_get_contents在內存第一次讀文件,然後返回。 對於200MB的文件大小,一個腳本需要超過200MB的內存。

爲了解決它,你應該按塊讀取文件並輸出它。

例如

$fp = fopen($path.$name, "rb"); 
if ($fp) { 
    while(!feof($fp)) { 
     $str = fread($fp, 1024); 
     echo $str; 
    } 
    fclose($fp); 
} 
+0

非常感謝,但您忘記了: ob_flush(); flush(); –

+0

如果你想,那麼你可以添加它。但是這段代碼只是爲了調用file_get_contents – newman