我试图在转换后将输入文件重命名为 .jpg,但由于某种原因,当我真的在寻找 file.jpg 时,我得到了一个 file.png.jpg
这是我的代码:
$source = $path . $_POST['username']. "-" . $_FILES['t1']['name'];
$destination = $path . $_POST['username']. "-" . basename($_FILES['t1']['name']) . ".jpg";
我试图在转换后将输入文件重命名为 .jpg,但由于某种原因,当我真的在寻找 file.jpg 时,我得到了一个 file.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 的第二个参数来终止后缀
$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并进行压缩? ”。
该basename()
功能包括原始文件扩展名
使用该pathinfo()
函数返回有关文件的信息数组,并使用不带扩展名的文件名
代替
$destination = $path . $_POST['username']. "-" . basename($_FILES['t1']['name']) . ".jpg";
和
$info = pathinfo($_FILES['t1']['name']);
$destination = $path . $_POST['username']. "-" . $info['filename'] . ".jpg";