如何仅在WordPress中严格限制图像的上传大小?如果您转到“设置”页面,它将告诉您上传文件类型和最大上传大小。除了图片之外,我想保持最大上传大小均匀。
答案 0 :(得分:1)
我不认为这是可能的,因为你无法在运行时更改upload_max_filesize
。检查this .ini configuration list。它说upload_max_filesize
是PHP_INI_PERDIR
否则,您可以使用jQuery / JS 以某种方式检查文件类型,更改upload_max_filesize
,post_max_size
,memory_limit
或者其他任何适合您的需求使用AJAX (这在我看来有点安全漏洞),然后上传它。
由于您无法在运行时更改upload_max_filesize
,因此检查上传文件是图像还是其他任何内容都没有意义,因为所有文件的文件大小都相同。通过上传,我不是指move_uploaded_file()
函数,而是从客户端到临时服务器文件文件夹的文件传输。
答案 1 :(得分:1)
我知道这个问题有点老了,但是最近我不得不在一个项目中这样做,也许它可以帮助某个人。
TL; DR
在您的 functions.php
中使用它/**
* Limit the file size for images upload
*
* @param $file
* @return mixed
*/
function filter_image_pre_upload($file)
{
$allowed_types = ['image/jpeg', 'image/png'];
// 3 MB.
$max_allowed_size = 3000 * 1024;
if (in_array($file['type'], $allowed_types)) {
if ($file['size'] > $max_allowed_size) {
$file['error'] = 'Please reduce the size of your image to 3 Mb or less before uploading it.';
}
}
return $file;
}
add_filter('wp_handle_upload_prefilter', 'filter_image_pre_upload', 20);
详细信息:
您必须连接到 wp_handle_upload_prefilter 过滤器,该过滤器允许您修改要上传的文件数组(但必须先将其复制到最终位置)。
您将收到一个$file
数组,并且您需要的键是大小,类型,和错误
在$allowed_types
数组中,添加要允许的mime types。
在$max_allowed_size
中,您要设置要允许的最大大小(此值以字节为单位)
然后,您验证上传的文件符合您的要求,如果不符合要求,则添加$file['error']
。
在WordPress代码中,如果$file['error']
不同于0,则它假定它是一个显示错误的字符串,并阻止文件上传。
希望这会有所帮助!