2015-11-04 3 views
1

Это моя загрузка PHP:Как получить имя файла из полного пути с 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

Если вы не показываете, как связаны разные строки кода, на которые невозможно ответить. Очевидным решением было бы переименовать сначала, затем переместить и сохранить в базе данных ... – jeroen

ответ

0

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

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

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

0

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

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

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

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

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

+0

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

+0

, если вы форматируете свой код лучше, я могу вам точно сказать, действительно трудно читать – jycr753

Смежные вопросы