2012-03-09 3 views
2

Все, я использую следующий код, чтобы загрузить несколько изображений в моем 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 в переопределениях или что-то в этом роде? Любая помощь будет принята с благодарностью!

Спасибо!

ответ

8

Установите массив в своих переопределениях для разрешенных типов мимов. Вот пример для 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/jpg','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]; 
} 
+0

Спасибо, это то, что я искал. Это дает мне ошибку, хотя, когда я пытаюсь загрузить изображение, говоря, что это запрещено. Любая идея о том, как я могу видеть ценность, с которой он проверяет? – user1048676

+0

: отредактирован массив $ allowed_file_types FYI. –

0

Вы можете проверить расширение файла, как это:

// 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; 
    } 

Вы также можете проверить тип пантомимы файла, который является значением «типа» вместо «имя». См. http://www.php.net/manual/en/reserved.variables.files.php

Смежные вопросы