Как получить имя файла из полного пути с помощью PHP

1

Это моя загрузка 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/ABC.jpg)), и он будет вставляться в таблицу sql.

Проблема здесь:

Я изменил глобальную функцию, чтобы автоматически переименовывать файлы, используя следующий код:

До этого было:

        $destinationName = $file['name'];

Я изменил его на:

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

Теперь, после загрузки файла в папку тестов, он будет автоматически переименован, но все же имя файла пути будет таким же, что и ABC.jpg не переименован в папку с файлами тестов.

Как получить имя файла переименованного пути???

Я очень ценю вашу помощь по этой проблеме.

заранее спасибо

  • 0
    Если вы не покажете, как связаны разные строки кода, ответить невозможно. Очевидным решением было бы сначала переименовать, а затем переместить и сохранить в базе данных ...
Теги:
file-upload
filenames
filepath

2 ответа

0

Чтобы переименовать имя файла пути, вы можете использовать это:

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

Это позволит убедиться, что путь существует, и если он не будет создан. Теперь мы можем переименовать()

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

Это при необходимости переместит его между каталогами.

  • 0
    Как это сделать? Какую часть моего кода выше я должен поставить этот? Спасибо
  • 0
    если вы отформатируете свой код лучше, я могу точно сказать, действительно трудно читать
0

Используйте basename(), чтобы получить имя файла из пути.

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

Это даст вам: file.ext

Ещё вопросы

Сообщество Overcoder
Наверх
Меню