2016-08-14 20 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)