Извлечение расширения файла в PHP (скрипт загрузки изображений) - PullRequest
0 голосов
/ 14 июня 2009

Может кто-нибудь сказать мне, что не так с этим? Файл переименован с использованием отметки времени, но расширение не извлекается и не помещается в новое имя.

    $filenameext = pathinfo($filename, PATHINFO_EXTENSION);

    $today = getdate();
    $uniqueStr = $today[year];
    $uniqueStr .= $today[mon];
    $uniqueStr .= $today[wday];
    $uniqueStr .= $today[mday];
    $uniqueStr .= $today[hours];
    $uniqueStr .= $today[minutes];
    $uniqueStr .= $today[seconds];

    $filename = $uniqueStr.".".$filenameext;

Полный код:

<?php
$folder = 'images/';
$orig_w = 500;

if( isset($_POST['submit']) )
{
    $imageFile = $_FILES['image']['tmp_name'];
    $filenameext = pathinfo($filename, PATHINFO_EXTENSION);

    $today = getdate();
    $uniqueStr = $today[year];
    $uniqueStr .= $today[mon];
    $uniqueStr .= $today[wday];
    $uniqueStr .= $today[mday];
    $uniqueStr .= $today[hours];
    $uniqueStr .= $today[minutes];
    $uniqueStr .= $today[seconds];
    $filename = $uniqueStr.".".$filenameext;

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

    $src = imagecreatefromjpeg($imageFile);
    $orig_h = ($height/$width)* $orig_w;

    $tmp = imagecreatetruecolor($orig_w, $orig_h);
    imagecopyresampled($tmp, $src, 0,0,0,0,$orig_w,$orig_h,$width,$height);
    imagejpeg($tmp, $folder.$filename,100);

    imagedestroy($tmp);
    imagedestroy($src);

    $filename = urlencode($filename);
    header("Location: crop.php?filename=$filename&height=$orig_h");
}

?>

Ответы [ 4 ]

5 голосов
/ 14 июня 2009

Это должно работать нормально - вы можете напечатать ваше $ filename прямо перед pathinfo ()?

Отредактируйте после того, как вы опубликовали свой код: так что позвольте мне получить это прямо

$imageFile = $_FILES['image']['tmp_name'];
$filenameext = pathinfo($filename, PATHINFO_EXTENSION);

Вы читаете в $ imageFile, но анализируете неинициализированную переменную $ filename?

3 голосов
/ 14 июня 2009

Не доверяйте расширению имени файла, чтобы точно описать формат файла. Не доверяй и типу пантомимы.

$sourceFile = $_FILES['photoupload']['tmp_name'];

list($width, $height, $type, $attr) = getimagesize($sourceFile);

$filetype = image_type_to_extension($type, true);
// $filetype includes the dot.
if ('.jpeg' == $filetype) {
    $filetype = '.jpg';  // use jpg, not the 'jpeg' the function would return
}
0 голосов
/ 13 марта 2014
explode(".", $_FILES["file"]["name"]);
0 голосов
/ 14 июня 2009

Хотя pathinfo () должна возвращать строку для отдельных запросов, обычно она определяется для возврата массива.

Попробуйте это: $ filenameext = pathinfo ($ path) ['extension'];

Тем не менее, вы зарегистрировали вывод "пути"? Это может быть временный путь, сгенерированный вашим веб-сервером при загрузке, а не предоставленное пользователем имя файла, в зависимости от того, откуда вы его получили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...