2010-08-19 126 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