谁能告诉我这有什么问题?使用时间戳重命名该文件,但不会解压缩扩展名并将其放在新名称中。
$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");
}
&GT;
答案 0 :(得分:5)
这应该可以正常工作 - 你可以在pathinfo()之前打印你的$ filename吗?
发布代码后编辑:所以让我直截了当地
$imageFile = $_FILES['image']['tmp_name'];
$filenameext = pathinfo($filename, PATHINFO_EXTENSION);
你在$ imageFile中读取但是解析了一个未初始化的变量$ filename?
答案 1 :(得分:3)
不要信任文件扩展名来准确描述文件格式。不要相信哑剧类型。
$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
}
答案 2 :(得分:0)
虽然pathinfo()应该为单个请求返回一个字符串,但它通常被定义为返回一个数组。
试试这个: $ filenameext = pathinfo($ path)['extension'];
但是,您是否记录了“路径”的输出?它可能是您的Web服务器在上传时生成的临时路径,而不是用户提供的文件名,具体取决于您从何处获取。
答案 3 :(得分:0)
explode(".", $_FILES["file"]["name"]);