2010-08-19 180 views
0

嗨,大家好,我必須將.MP3上傳的文件擴展名重命名爲.zip請幫助我一直堅持這幾天。感謝提前:)php重命名(未知)上傳的文件擴展名

if (!copy($file, $newfile)) { 
    echo "failed to copy $file...\n"; 
} 
$filename = "members/$id/music" . "/" . $_FILES["file"]["name"]; 
    function replace_extension($filename, $zip) { 
    return preg_replace('/\..+$/', '.' . $zip, $filename); 
} 
+2

如果你知道它是MP3的話,那是不是未知。請清楚你以後的情況。 – Gordon 2010-08-19 14:04:54

+0

另外,你爲什麼要將擴展名重命名爲.zip?如果它是一個mp3,它不是一個zip。 – Gordon 2010-08-19 14:13:13

+0

如果我知道(文件).mp3的名稱是什麼,但是我不能重命名$ _FILES [「file」] [「name」] - 我知道它是mp3,但是我不知道$ _FILES [「file」] [「name」]的名字是 – drakos 2010-08-20 08:41:48

回答

1

使用這個代替:

function replace_extension($file, $new_extension) { 
    $t = pathinfo($file); 
    unset($t["basename"]); 
    unset($t["extension"]); 
    return implode(DIRECTORY_SEPARATOR, $t) . "." . $new_extension; 
} 
+0

啊,聰明!比我的完整,因爲它保留了一條可能的完整路徑。 +1並刪除 – 2010-08-19 14:07:24

+0

@Pekka不幸的是'PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_FILENAME'組合看起來很麻煩,因爲它不排除文件名。我不得不改變實施。 – Artefacto 2010-08-19 14:13:34

+0

非常感謝大家的幫助 確定apolagies球員的無知,但我改變了東西,因爲我不知道需要改變上面的報價,但無論如何在這裏。 ////////////////////////////// $ new_extension =「zip」; function replace_extension($ file,$ new_extension){ $ t = pathinfo($ file); unset($ t [$ _ FILES [「file」] [「name」]]); 未設置($ t [「MP3」]); return implode(「members/$ id/music」。「/」。$ _FILES [「file」] [「name」],$ t)。 「」 。 $ new_extension; } – drakos 2010-08-19 15:03:24

2

如果您需要添加.zip文件,這是否意味着你需要實際壓縮過的文件?只需添加.zip擴展名就不會使其成爲有效的zip文件。你可能想看看: http://www.php.net/manual/en/function.ziparchive-addfile.php

$zip = new ZipArchive; 
if ($zip->open('test.zip') === TRUE) { 
    $zip->addFile('/path/to/index.txt', 'newname.txt'); 
    $zip->close(); 
    echo 'ok'; 
} else { 
    echo 'failed'; 
} 
+0

我試過你的想法,這是偉大thanx,但服務器給我和錯誤:警告:/// ///////////////////////////// ZipArchive :: addFile()[ziparchive.addfile]:無效或單元化的Zip對象//// //////////當我嘗試這個時://////////// $ path =「./」; $ file =「members/$ id」。 「/」。 $ _FILES [ 「文件」] [ 「名稱」]; $ zip = new ZipArchive; $ zip-> addFile('./',$ _FILES [「file」] [「name」]); – drakos 2010-08-20 12:15:35

+0

您可能需要加載PECL擴展或使用'--with-zip'編譯php。請參閱:http://www.php.net/manual/en/zip.installation.php。另一個選擇可能是使用gz壓縮(http://www.php.net/manual/en/function.gzwrite.php) – 2010-08-20 13:16:35