【问题标题】:How to get file name from full path with PHP如何使用 PHP 从完整路径中获取文件名
【发布时间】:2015-11-04 20:10:26
【问题描述】:

这是我上传的php:

  if (trim($_FILES['path_filename']['name']))
{
  if (File::upload($_FILES['path_filename'], dirname(realpath(__FILE__)) . '/../tests'))
  {
    $test->setPathFilename('../tests/' . $_FILES['path_filename']['name']);
  }
}
  }
  else
  {
if ($aux)
{
  $aux = str_replace("\\", "/", $aux);
  $aux = preg_replace("/[\/]+/", "/", $aux);
  $test->setPathFilename($aux);
}
  }
  $_POST["upload_file"] = $test->getPathFilename();

上面的代码运行良好,我的意思是,上传到服务器正在运行,并且获取 路径文件名 并插入到 sql 表中也可以。

示例:当我上传文件例如: ABC.jpg 时,它将上传到 tests 文件夹,并且路径文件名是 (( ../tests/ABC.jpg )),它会插入到 sql 表中。

问题出在这里:

我使用以下代码更改了全局函数以自动重命名文件:

以前:

        $destinationName = $file['name'];

我改成:

$ext = pathinfo($file["name"], PATHINFO_EXTENSION);
$destinationName = sha1_file($file["tmp_name"]).time().".".$ext;

现在,上传文件到tests文件夹后,会自动重命名,但是路径文件名还是一样的,tests文件夹里面是ABC.jpg文件,没有重命名。

如何获得重命名的路径文件名???

非常感谢您在这个问题上的帮助。

提前致谢

【问题讨论】:

  • 除非你展示不同的代码行是如何相关的,否则这是无法回答的。显而易见的解决方案是先重命名,然后移动并存储在数据库中......

标签: php file-upload filenames filepath


【解决方案1】:

使用basename() 从路径中获取文件名。

$filename = basename('/path/to/file.ext');

这会给你:file.ext

【讨论】:

    【解决方案2】:

    要重命名路径文件名,您可以使用:

    if ( !file_exists( $path ) ) {
        mkdir( $path, 0777, true );
    }
    

    这将确保路径存在,如果不存在,它将创建。现在我们可以rename()

    rename( __FILE__  "/new/path/".$file_name );
    

    如有必要,这将在目录之间移动它。

    【讨论】:

    • 如何制作?我应该把上面代码的哪一部分放在这个部分?谢谢
    • 如果你的代码格式更好,我可以准确地告诉你,真的很难阅读
    猜你喜欢
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    相关资源
    最近更新 更多