1

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

这是我的代码:

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

5 回答 5

2

使用pathinfo()

$source = $path . $_POST['username']. "-" . $_FILES['t1']['name'];
$path_parts = pathinfo( $_FILES['t1']['name'] );
$destination = $path . $_POST['username']. "-" . $path_parts['filename'] . ".jpg";
于 2013-05-28T16:16:08.813 回答
1

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

要将扩展名更改为 jpg ,只需通过此函数运行它:

function replace_extension($filename) {
    return preg_replace('/\..+$/', '.' . '.jpg', $filename);
}
于 2013-05-28T16:17:16.763 回答
0

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

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

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

$filename = substr($_FILES['t1']['name],0, strrpos($_FILES['t1']['name'], ".") -1);
于 2013-05-28T16:17:09.483 回答
0

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

但是如果你想将png转为jpg,你不能只改变文件名,你必须使用特殊的函数来转换文件,参见“使用PHP将PNG转换为JPG并进行压缩? ”。

于 2013-05-28T16:19:11.410 回答
0

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

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

代替

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

$info = pathinfo($_FILES['t1']['name']);
$destination = $path . $_POST['username']. "-" . $info['filename'] . ".jpg";
于 2013-05-28T16:16:16.790 回答