2011-08-09 88 views
1

我正在使用下面的代碼片段來獲取文件名和擴展名,這是可行的,但我怎麼才能重命名文件,使文件名將等於bake23 +文件的擴展名。如何在保存之前重命名上傳的文件?

$variable = 'baKe23'; 


    $filename = $_FILES['filename']['name']; 
    $ext = $_FILES["filename"]["type"]; 

重命名,如果文件名已經存在:

 $filename = $_FILES['filename']['name']; 
    $extension = substr($filename, strpos($filename,'.'), 
    strlen($filename)-1); 

     $sql="SELECT filename FROM documents WHERE person_id= '$pid'"; 

    $result=mysql_query($sql); 

    $query = mysql_query($sql) or die ("Error: ".mysql_error()); 

    if ($result == "") 
    { 
    echo ""; 
    } 
    echo ""; 


    $rows = mysql_num_rows($result); 

    if($rows == 0) 
    { 
    print(""); 

    } 
    elseif($rows > 0) 
    { 
    while($row = mysql_fetch_array($query)) 
    { 

    $existing = $row['filename']; 

    print(""); 
    } 

    } 

    if ($filename === $existing) { 
$filename = $rnd_id.strrchr($_FILES['filename']['name'], "."); 

    } else { 
    $filename = $_FILES['filename']['name'];; 
    } 

回答

4

從提交的文件名得到擴展,並將其添加到您的變量:

$filename = basename($filename); 
$filename = $variable . (string) strrchr($filename, '.'); 

編輯:爲您編輯的問題,字面上

$filename = $variable . '.' . $ext; 

但是,考慮到我會上傳的圖像稱爲banana-smiley.gif,下面會發生:

$filename = 'baKe23.image/gif'; 

這不是你想我假設。你甚至不應該依賴$_FILES[*]["type"]。你需要做的是檢查每個上傳的文件(確定類型,驗證類型,在上傳的文件上運行病毒檢查程序)。

與此相關的問題是Secure File Upload and validating itIs it important to verify that the uploaded file is an actual image file?

+0

對不起,我使用擴展程序代碼更新了我的問題。 – KPO

+0

@KPO:不要使用類型。 – genesis

+0

我是新的,所以不知道你不推薦它的原因.... – KPO

3
$variable = 'baKe23'; 
$filename = $_FILES['filename']['name']; 
$filename = $variable.strrchr($_FILES['filename']['name'], "."); 

$variable = 'baKe23'; 
$filename = $_FILES['filename']['name']; 
$filename = $variable.".".pathinfo($filename, PATHINFO_EXTENSION); 
+0

你是否正在閱讀這個問題?!? – KingCrunch

+0

@KingCrunch:已經改變。你應該等一會兒再投降。只是一個錯誤 – genesis

+0

對不起,我更新了我的問題與擴展程序段。 – KPO

相關問題