PHP重命名输入文件问题

时间:2013-05-28 16:11:56

标签: php

我正在尝试在转换后将输入文件重命名为.jpg,但出于某种原因,当我真的在寻找file.jpg时,我得到了一个file.png.jpg

这是我的代码:

$source = $path . $_POST['username']. "-" . $_FILES['t1']['name'];
$destination = $path . $_POST['username']. "-" . basename($_FILES['t1']['name']) . ".jpg";

5 个答案:

答案 0 :(得分:2)

使用 pathinfo()

$source = $path . $_POST['username']. "-" . $_FILES['t1']['name'];
$path_parts = pathinfo( $_FILES['t1']['name'] );
$destination = $path . $_POST['username']. "-" . $path_parts['filename'] . ".jpg";

答案 1 :(得分:1)

假设变量$filename包含带有png扩展名的图像名称。

为了将扩展名更改为jpg,只需通过此功能运行:

function replace_extension($filename) {
    return preg_replace('/\..+$/', '.' . '.jpg', $filename);
}

答案 2 :(得分:0)

basename()功能包括原始文件扩展名

使用pathinfo()函数返回有关该文件的信息数组,并使用带扩展名的文件名

替换

$destination = $path . $_POST['username']. "-" . basename($_FILES['t1']['name']) . ".jpg";

$info = pathinfo($_FILES['t1']['name']);
$destination = $path . $_POST['username']. "-" . $info['filename'] . ".jpg";

答案 3 :(得分:0)

您可以使用第二个参数basename来终止后缀

$filename = basename($_FILES['t1']['name'], ".png");

或者你可以做一些字符串操作

$filename = substr($_FILES['t1']['name],0, strrpos($_FILES['t1']['name'], ".") -1);

答案 4 :(得分:0)

basename返回整个文件名,包括文件类型后缀(即“.jpg”)。如果要删除后缀,可以使用第二个参数调用该函数:basename($_FILES['t1']['name'], 'png')

但是如果你想将png转换为jpg,你不能只改变文件名,你必须使用特殊功能转换文件,参见“Use PHP to convert PNG to JPG with compression?”。