2016-08-14 39 views
0

即時通訊使用PHP下載文件的問題。它正在工作,直到我最近將我的網絡服務器安裝在USB棒上以在上線前測試一些新的修改。PHP的下載是從USB 0字節,權限?

一切工作,直到我在USB記憶棒上測試它,但是從USB棒運行服務器後,我能夠下載一個文件,但它是0字節。

我使用已經在互聯網上記錄的一個相當標準的下載技術:

//test if a parameter was passed 
if (isset($_GET['download'])) { 
if (!empty($_GET['download'])) { 
$files = $_GET['download']; 
download($files); 
} 
} 

//download function 
function download($files){ 

if(!file_exists($files)){ 
die('Error'); 
}else{ 
header('Content-Description: File Transfer'); 
header('Content-Disposition: attachment; filename='.basename($path)); 
header('Content-Type: application/octet-stream'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($file)); 
ob_clean(); 
ob_start(); 
flush(); 
readfile($files); 
exit; 
} 
} 

我相信檢查,以查看該文件是否存在線路將防止下載該doesent存在的文件的能力。 ..不能下載一個空文件。

目前我相信它可能是一個權限問題,但iv無法驗證在網上看作爲文件確實存在於USB和硬盤上,所以也許它通過測試,但不允許從USB讀取?

+0

'filesize($ file)'copypaste錯誤還是實際錯誤? –

+0

嗯,這就像是在原來的..但我會嘗試改變它,看看它是否工作。 – D3181

+0

@SamiKuhmonen實際上這工作和解決了我的問題,是一種無論如何工作的疏忽,張貼它作爲一個答案,我會接受它 – D3181

回答

1

您正在使用錯誤的變量來檢查文件大小,因此您總是告訴收件人大小爲零。您可以改爲filesize($files)