如何在WordPress中严格限制图片的上传大小?如果你去设置页面,它会告诉你上传文件类型和最大上传大小。我想保持最大上传大小一致,所有除了图片。
发布于 2019-07-11 20:56:18
我知道这个问题有点老了,但我最近不得不为一个项目这样做,也许它可以帮助一些人。
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数组,您需要的键是size、type、和error
在$allowed_types数组中,您将添加您想要允许的mime types。
在$max_allowed_size中,您将设置您希望允许的最大大小(该值以字节为单位)
然后验证上传的文件是否符合您的需求,如果不匹配,则添加$file['error']。
在WordPress代码中,如果$file['error']不同于0,它将假定它是一个显示错误的字符串,并阻止上传文件。
希望这能有所帮助!
发布于 2016-04-01 22:21:10
我认为这是不可能的,因为你不能在运行时改变upload_max_filesize。检查this .ini configuration list。它说upload_max_filesize是PHP_INI_PERDIR
否则你可以用jQuery/JS检查文件类型,用AJAX改变upload_max_filesize,post_max_size,memory_limit或者任何你需要的东西(在我看来这有点安全漏洞),然后上传它。
因为你不能在运行时改变upload_max_filesize,所以检查上传的文件是图片还是其他东西是没有意义的,因为所有文件的文件大小都是一样的。我所说的上传并不是指move_uploaded_file()功能,而是指从客户端到临时服务器文件夹的文件传输。
https://stackoverflow.com/questions/36358275
复制相似问题