0

当用户上传一张照片时,它会检查他们是否已经有一张照片;如果他们这样做,我希望它删除旧的(可能有任何扩展名),然后放入新的。有没有办法在不从数据库中获取旧扩展的情况下做到这一点?目前的代码:

        $del = $members->prepare("insert into profiles(userid, path, width, height, type, rtu, ext) values(?, ?, ?, ?, ?, ?, ?) 
                                    ON DUPLICATE KEY UPDATE path = ?, width = ?, height = ?, type = ?, rtu = ?, ext = ?, time = NOW()");
        $del->bind_param('sssssssssssss', $_SESSION['token'], $title, $file_info[0], $file_info[1], $file_info[2], $rh, $extension, 
        $title, $file_info[0], $file_info[1], $file_info[2], $rh, $extension);

        $del->execute();

        $new_file_name = "bb-x".$_SESSION['token'].".".$extension;

        if ($del->affected_rows > 0) {

            unlink('profiles/bb-x62'<any extension>);
        }

        $move_file = move_uploaded_file($file['tmp_name'], $upload_image_to_folder.$new_file_name);
4

2 回答 2

12

代替unlink('profiles/bb-x62'<any extension>);

使用这两行:

$file_pattern = "profiles/bb-x62.*" // Assuming your files are named like profiles/bb-x62.foo, profiles/bb-x62.bar, etc.
array_map( "unlink", glob( $file_pattern ) );

这应该够了吧。

于 2012-04-13T22:36:49.003 回答
1

您可以从受影响目录中的服务器获取文件列表,并在其中搜索具有相同文件名的条目,直到点和扩展名。从服务器数据中获取完整的文件名并删除该文件。删除非常相似的文件名存在一些风险,但您可以内置检查以确定文件名除了扩展名之外是相同的。

听起来从数据库中获取完整的文件名可能会减少麻烦并加载到服务器上......

于 2012-04-13T22:32:42.880 回答