【问题标题】:Only allow certain files types to be added during an upload仅允许在上传期间添加某些文件类型
【发布时间】:2012-03-09 19:07:07
【问题描述】:

所有, 我正在使用以下代码将一些图片上传到我的 Wordpress 博客:

$fieldname = 'logo';
include_once(ABSPATH . 'wp-admin/includes/media.php');
include_once(ABSPATH . 'wp-admin/includes/file.php');

if ($_FILES[$fieldname]) {
    $overrides = array('test_form' => false); 
    $file = wp_handle_upload($_FILES[$fieldname], $overrides);
    echo $file[error];
}

这很好用,但是我可以上传任何类型的文件,而且您知道这可能存在潜在危险。有没有办法确保文件只是覆盖中的 .jpg、.jpeg、.gif 或 .png 或类似的东西?任何帮助将不胜感激!

谢谢!

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    在您的覆盖中为允许的 mime 类型设置一个数组。这是 gif/jpg 的示例

    $fieldname = 'logo';
    include_once(ABSPATH . 'wp-admin/includes/media.php');
    include_once(ABSPATH . 'wp-admin/includes/file.php');
    
    
    if ($_FILES[$fieldname]) {
        $allowed_file_types = array(
            'jpg'  => 'image/jpeg',
            'jpeg' => 'image/jpeg',
            'gif'  => 'image/gif',
            'png'  => 'image/png');
        $overrides          = array(
            'test_form' => false,
            'mimes'     => $allowed_file_types
    );
    
        $file = wp_handle_upload($_FILES[$fieldname], $overrides);
        echo $file[error];
    }
    

    【讨论】:

    • 谢谢,这就是我要找的。但是,当我尝试上传一张图片说不允许这样做时,它给了我一个错误。关于如何查看它所检查的值的任何想法?
    【解决方案2】:

    您可以像这样检查文件扩展名:

        // check for extension !
        $name = $_FILES['foto']['name'];
        $ext = explode(".",$name);
        $ext = array_reverse($ext);
        $ext = strtolower($ext[0]);
        $valid = 0;
        $error = false;
    
        if (!empty($_GET['exts'])) {
            if ($_GET['exts'] == 'all') {
                $valid=1;
            } else {
                if (strpos($_GET['exts'],$ext) !== false) $valid=1;
                else $valid=0;
            }
        } else {
            if (strpos($defexts,$ext) !== false) $valid=1;
            else $valid=0;
        }
    

    您还可以检查文件的 MIME 类型,即值“类型”而不是“名称”。 见http://www.php.net/manual/en/reserved.variables.files.php

    【讨论】:

      猜你喜欢
      • 2011-01-29
      • 2011-10-20
      • 1970-01-01
      • 2014-07-07
      • 2012-05-26
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多