Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何限制上载的文件大小?_Php_File_Upload_Filesize - Fatal编程技术网

Php 如何限制上载的文件大小?

Php 如何限制上载的文件大小?,php,file,upload,filesize,Php,File,Upload,Filesize,请参阅下面的代码片段。我用它来限制超过5MB的文件。当文件超过5 mb时,它会说“您试图上传的文件是不允许的”,而实际上它应该说“您试图上传的文件太大”。这并不是因为我把它们放在代码的错误部分,我使用的是: if(filesize($_FILES['filename']['tmp_name']) > $max_filesize) 完整代码: // Configuration - Your Options $allowed_filetypes = array('.pdf','.jpg','

请参阅下面的代码片段。我用它来限制超过5MB的文件。当文件超过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('');

您的文件扩展名代码很可能不正确

尝试:

$allowed_filetypes = array('pdf', 'jpg', 'png', 'gif');
// ...
$ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
// ...
否则,由于文件大小的限制,文件基本上不会上载;您可以通过查看
$\u文件['filename']['error']
来检查这一点。该值应为0

如果它不是0,您可以在此处检查它的含义:


在您的情况下,文件可能太大;检查这里可能出现的错误:

当你上传一个小于.5MB的文件时会发生什么?最好的方法应该是在客户端检查文件的大小(但我不知道如何,谷歌的一些js:-)。在服务器端,您只需通过ini_set/upload_max_filesize设置限制并检查错误…@Fanda,我很确定尝试在
ini_set
中限制上载大小不会很好。@JMCCreative files小于.5mb get upload.ini_set不能用于更改上载设置。您的代码(以及ini_集)直到上传发生后才会被调用。任何上传设置更改都必须在php.ini/.htaccess级别进行。然后我建议您执行
var\u转储($ext,$allowed\u filetypes)并显示结果。bool(false)数组(4){[0]=>string(4)”.pdf“[1]=>string(4)”.jpg“[2]=>string(4)”.png“[3]=>string(4)”.gif”}不允许您尝试上载的文件。好的,因此对
$ext
的分配有问题。。您必须
var\u dump($filename)也是。好的,这样做我得到了:空你试图上传的文件是不允许的。更新了我的答案;你有另一个问题;-)