2015-11-04 67 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