簡體   English   中英

用PHP提取文件擴展名(圖像上傳腳本)

[英]Extracting File Extension in PHP (image upload script)

誰能告訴我這是怎么了? 該文件使用時間戳進行重命名,但擴展名不會被提取並放置在新名稱中。

    $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");
}

?>

這應該可以正常工作-您可以在pathinfo()之前打印$ filename嗎?

發布代碼后進行編輯:所以讓我明白這一點

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

您讀了$ imageFile但解析了未初始化的變量$ filename?

不要信任文件名擴展名來准確描述文件格式。 也不要相信啞劇類型。

$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
}
explode(".", $_FILES["file"]["name"]);

雖然pathinfo()應該為單個請求返回一個字符串,但通常將其定義為返回一個數組。

試試這個:$ filenameext = pathinfo($ path)['extension'];

但是,您是否記錄了“ path”的輸出? 它可能是您的Web服務器上載時生成的臨時路徑,而不是用戶提供的文件名,具體取決於您從何處獲取文件名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM