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>);

次の 2 行を使用します。

$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 に答える