PHP输入文件重命名问题


PHP renaming of input file issues

我试图在转换后将输入文件重命名为。jpg,但由于某种原因,当我真正寻找文件。jpg

时,我得到了一个文件。png.jpg下面是我的代码:
$source = $path . $_POST['username']. "-" . $_FILES['t1']['name'];
$destination = $path . $_POST['username']. "-" . basename($_FILES['t1']['name']) . ".jpg";

使用 pathinfo () :

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

假设变量$filename包含您的图像名称,扩展名为png。

为了将扩展名更改为jpg,只需通过以下函数运行它:

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

basename()函数包括原始文件扩展名

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

的文件名代替

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

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

您可以使用basename的第二个参数来删除后缀

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

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

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

basename返回整个文件名,包括文件类型后缀(即。"jpg")。如果想去掉后缀,可以用第二个参数basename($_FILES['t1']['name'], 'png')调用该函数。

但是如果你想把png转换成jpg,你不能仅仅改变文件名,你必须使用特殊的函数来转换文件,参见"使用PHP将png转换成jpg ?"