ФорумПрограммированиеPHP для идиотов → Как определить расширение файла?

Как определить расширение файла?

  • XoxMa

    Сообщения: 135 Репутация: N Группа: Кто попало

    Spritz 12 апреля 2008 г. 17:42

    Мне нужно узнать как определить расширение файла.
    Как это сделать?

    Я кое-что нашёл в инете, но кажется это не работает:

    <?php
    $string = "sjhfdh.sdhfgkljd.idsufg.gif";
    $type = explode(".", $string);
    echo $type[count($type) - 1];
    ?>


    $file = "image.gif";
    $ext = substr($file,1+strrpos($file,"."));
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 12 апреля 2008 г. 18:24, спустя 42 минуты 8 секунд

    Работает и первое и второе. Какие у тебя ошибки?
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 13 апреля 2008 г. 1:37, спустя 7 часов 12 минут 26 секунд

  • XoxMa

    Сообщения: 135 Репутация: N Группа: Кто попало

    Spritz 13 апреля 2008 г. 3:54, спустя 2 часа 17 минут 4 секунды


    http://ru2.php.net/manual/ru/function.pathinfo.php

    Я уже смотрел эту вещь. Но она мне не подходит, потому что мне нужно, чтобы пользователи загружали свои картинки на мой хостинг.
    Кстати, если пользователи загружают свои картинки, то можно писать так: ?

    if (empty($_POST))
    {
    …код для картинок…
    }

    или может здесь нужно какой-нибудь $_FILES вместо $_POST ?
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало
  • XoxMa

    Сообщения: 135 Репутация: N Группа: Кто попало

    Spritz 13 апреля 2008 г. 6:37, спустя 2 часа 11 минут 58 секунд

    Я написал такую строчку:

    print_r($_FILES);

    И мне он выводит:

    Array
    (
       [userfile] => Array
           (
               [name] => mypic.jpg
               [type] => image/jpeg
               [tmp_name] => /var/tmp/phptrPmDL
               [error] => 0
               [size] => 7071
           )

    )

    Как можно из этого массива взять [size] => 7071 одним чистом? то есть чтобы мне вывело только 7071.
  • welder

    Сообщения: 2945 Репутация: N Группа: в ухо

    Spritz 13 апреля 2008 г. 6:45, спустя 8 минут 30 секунд

    $_FILES['size']
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 13 апреля 2008 г. 7:12, спустя 26 минут 37 секунд

    $_FILES['userfile']['size']
    :)
    все умрут, а я изумруд
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 13 апреля 2008 г. 7:12, спустя 30 секунд

    http://ru2.php.net/manual/en/language.types.array.php
    все умрут, а я изумруд
  • XoxMa

    Сообщения: 135 Репутация: N Группа: Кто попало

    Spritz 13 апреля 2008 г. 10:13, спустя 3 часа 1 минуту 6 секунд

    Что у меня здесь неправильно? Писал эту вещь многими способами, и ни один не действует, уже нервов нету:

    if ($_FILES['userfile']['type'] != ("image/jpeg" || "image/gif" || "image/png" || "image/tif" || "image/bmp"))
    {
    echo "Неправильный формат фотографии.";
    }
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 13 апреля 2008 г. 10:55, спустя 41 минуту 59 секунд

    Здесь неправильно абсолютно всё.
    Как и в большинстве ваших сообщений.
  • XoxMa

    Сообщения: 135 Репутация: N Группа: Кто попало

    Spritz 13 апреля 2008 г. 11:11, спустя 15 минут 16 секунд

    хм, может тогда напишешь плз как правильно?
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 13 апреля 2008 г. 11:53, спустя 42 минуты 3 секунды

    почитай про синтаксис и про логические операции
    никто за тебя каждый раз писать не будет
    все умрут, а я изумруд
  • XoxMa

    Сообщения: 135 Репутация: N Группа: Кто попало

    Spritz 14 апреля 2008 г. 11:24, спустя 23 часа 31 минуту 5 секунд

    Всё, разобрался, спасибо.

    Но теперь действительно мега-сложный вопрос.
    Заранее пишу, что я прочитал http://ru2.php.net/manual/ru/ref.image.php

    У меня пользователи загружают картинки на сервер, я их обризаю и потом сохраняю. Тока не знаю как сохранять.

    function imagecrop() {
    $image = $_FILES['userfile']['tmp_name'];
    header('Content-type: image/jpeg');

    if (!$max_width)
     $max_width = "40px";
    if (!$max_height)
     $max_height = "40px";

    list($width, $height) = getimagesize($image);

    $x_ratio = $max_width / $width;
    $y_ratio = $max_height / $height;

    if (($width <= $max_width) && ($height <= $max_height)) {
     $newwidth = $width;
     $newheight = $height;
    }
    else if (($x_ratio * $height) < $max_height) {
     $newheight = ceil($x_ratio * $height);
     $newwidth = $max_width;
    }
    else {
     $newwidth = ceil($y_ratio * $width);
     $newheight = $max_height;
    }

    $thumb = imagecreatetruecolor($newwidth, $newheight);
    $source = imagecreatefromjpeg($image);

    imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

    return imagejpeg($thumb);
    // imagedestroy($thumb);
    }

    $uploadfile = "images/img_".$id.".jpg";
    move_uploaded_file(imagecrop(), $uploadfile);

    Результат:
    после того, когда пользователи нажимают кнопку "Добавить картинку" у них появляет белый экран и сверху слева та самая картинка, которую они загружали в обрезанном виде.

    Что здесь надо изменить?
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 14 апреля 2008 г. 11:29, спустя 4 минуты 52 секунды

    Не move_uploaded_file а просто записать в файл. И сначала загрузить картинку и с ней работать, а не с $_FILES['userfile']['tmp_name'].
    И еще раз читать http://ru2.php.net/manual/ru/ref.image.php

Пожалуйста, авторизуйтесь, чтобы написать комментарий!