在WordPress

时间:2016-04-01 13:59:13

标签: wordpress image upload image-upload

如何仅在WordPress中严格限制图像的上传大小?如果您转到“设置”页面,它将告诉您上传文件类型和最大上传大小。除了图片之外,我想保持最大上传大小均匀。

2 个答案:

答案 0 :(得分:1)

我不认为这是可能的,因为你无法在运行时更改upload_max_filesize。检查this .ini configuration list。它说upload_max_filesizePHP_INI_PERDIR

否则,您可以使用jQuery / JS 以某种方式检查文件类型,更改upload_max_filesizepost_max_sizememory_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,则它假定它是一个显示错误的字符串,并阻止文件上传。

希望这会有所帮助!