【问题标题】:PHP renaming of input file issuesPHP重命名输入文件问题
【发布时间】:2013-05-23 16:51:49
【问题描述】:

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

这是我的代码:

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

【问题讨论】:

  • 和 $_FILES['t1']['name'] = file.png

标签: php


【解决方案1】:

使用pathinfo()

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      替换

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

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

      【讨论】:

        【解决方案4】:

        你可以使用 basename 的第二个参数来杀死后缀

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

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

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-11-30
            • 2014-02-06
            • 1970-01-01
            • 2014-09-09
            • 2016-12-06
            相关资源
            最近更新 更多