2012-05-09 178 views
0

请参阅下面的代码片段。我以一种限制5 MB以上文件的方式使用它。每当文件大于5 MB时它就会提示“您尝试上传的文件不被允许”,实际上它应该会显示“您尝试上传的文件太大”。这并不是说我把他们的代码中的错误部分,我使用:如何限制上传文件大小?

if(filesize($_FILES['filename']['tmp_name']) > $max_filesize) 

整个代码:

// Configuration - Your Options 
$allowed_filetypes = array('.pdf','.jpg','.png','.gif'); 
$max_filesize = 5242880; // Maximum filesize in BYTES (currently 0.5MB). 
$upload_path = "/store/user/$user"; 
$filename = $_FILES['filename']['name']; 
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); 
if(!in_array($ext,$allowed_filetypes)) 
die('The file you attempted to upload is not allowed.'); 
// Now check the filesize, if it is too large then DIE and inform the user. 
if(filesize($_FILES['filename']['tmp_name']) > $max_filesize) 
die('The file you attempted to upload is too large.'); 
// Check if we can upload to the specified path, if not DIE and inform the user. 
if(!is_writable($upload_path)) 
die(''); 
+0

上传一个_less_然后是.5MB的文件会发生什么? – JakeParis

+0

最好的方法应该是检查客户端文件的大小(但我不知道如何,从谷歌一些js :-))。在服务器端,你可以简单地设置限制ini_set/upload_max_filesize并检查错误... – Fanda

+0

@Fanda,我敢肯定,尝试限制'ini_set'的上传大小不能很好地工作。 – JakeParis

回答

1

你的文件扩展名的代码是不正确的,最有可能的。

尝试用:

$allowed_filetypes = array('pdf', 'jpg', 'png', 'gif'); 
// ... 
$ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); 
// ... 

否则,该文件基本上不会由于文件大小限制上传;你可以查看$_FILES['filename']['error']来查看。该值应为0

如果不是0,您可以在这里查看这意味着什么:http://www.php.net/manual/en/features.file-upload.errors.php

在你的情况下,该文件可能是太大;请在此处检查可能出现的错误:http://www.php.net/manual/en/features.file-upload.common-pitfalls.php

+0

尝试过但是同样的事 – ariel

+0

然后我建议你做一个'var_dump($ ext,$ allowed_filetypes);'并显示结果。 –

+0

bool (false)array(4){[0] => string(4)“.pdf”[1] => string(4)“.jpg”[2] => string(4)“.png”[3] => string(4)“.gif”}你试图上传的文件是不允许的 – ariel

相关问题