首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制图片上传大小,单位为WordPress

限制图片上传大小,单位为WordPress
EN

Stack Overflow用户
提问于 2016-04-01 21:59:13
回答 2查看 601关注 0票数 0

如何在WordPress中严格限制图片的上传大小?如果你去设置页面,它会告诉你上传文件类型和最大上传大小。我想保持最大上传大小一致,所有除了图片。

EN

回答 2

Stack Overflow用户

发布于 2019-07-11 20:56:18

我知道这个问题有点老了,但我最近不得不为一个项目这样做,也许它可以帮助一些人。

TL;DR

在您的functions.php中使用它

代码语言:javascript
复制
/**
 * 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,它将假定它是一个显示错误的字符串,并阻止上传文件。

希望这能有所帮助!

票数 2
EN

Stack Overflow用户

发布于 2016-04-01 22:21:10

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

否则你可以用jQuery/JS检查文件类型,用AJAX改变upload_max_filesizepost_max_sizememory_limit或者任何你需要的东西(在我看来这有点安全漏洞),然后上传它。

因为你不能在运行时改变upload_max_filesize,所以检查上传的文件是图片还是其他东西是没有意义的,因为所有文件的文件大小都是一样的。我所说的上传并不是指move_uploaded_file()功能,而是指从客户端到临时服务器文件夹的文件传输。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36358275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档