0

フォーラムのユーザー ページを作成しようとしていますが、画像のアップロードに苦労しています。問題は、ユーザーが 1 つの画像のみをアップロードできるように制限したいが、いつでも変更できるようにしたいことです。基本的に、既存のファイルを上書きするか、古い画像を削除して代わりに新しい画像を追加したいと思います。この時点で、ファイルの最後にタイムスタンプを追加するコードができました (これは実際には必要ありません)。

コード:

if(isset($_POST['upload']))
{

$extension=strstr($_FILES['uploadedfile']['name'], ".");
    $filename = "_/userfiles/userpics/".basename($_FILES['uploadedfile']['name'], 
$extension);
    $target = "_/userfiles/userpics/".basename($_FILES['uploadedfile']['name']);

$valid = true;  
if(file_exists($target))
{

    $filename = $filename . time();
    $target = $filename . $extension;
}
if($valid)
{
    // move the file into the folder of our choise
    move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target);       
    $img_sql = "INSERT INTO sp_userimage (imageid, path, id) value ('', '".$target."', '".$_SESSION['userid']."')";
    $img_result = mysql_query($img_sql);
    echo "upload sucessfull";
}
4

6 に答える 6

2

PHPマニュアルで利用unlink()します。

if(file_exists($target))
{
    unlink($target); // deletes file
    //$filename = $filename . time();
    //$target = $filename . $extension;
}
于 2013-09-12T10:18:41.910 に答える
0

Use unlink() function

詳細はこちらPHP unlink

その特定のユーザーのみのファイルを削除したい場合は、わかりました。

次にfilename vs user、db の一部の MapTable に格納します。

mysql_query("CREATE TABLE t_usr_file_map( usr_id INT NOT NULL , file_name VARCHAR(100), )") or die(mysql_error());

再アップロード時に、そのユーザーのテーブルからファイル名を取得し、リンクを解除して、新しいファイルを再度アップロードします。

また、

または、アップロード時に PHP の file_rename 関数を使用できます。ファイル名をユーザーIDにリネーム

rename ( string $oldname , string $newname [, resource $context ] )

そして、あなたはいつでもunlinkユーザーIDに基づいて行うことができます

于 2013-09-12T10:21:22.843 に答える
0

画像の種類 (例: jpeg のみ) を正規化し、ファイルにユーザー ID として名前を付ける方が簡単な場合があります。例えば:

$target = 'userpics' . DIRECTORY_SEPARATOR . $_SESSION['userid'];
move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target);

これにより、古い画像が新しい画像で単純に上書きされます。このタイプのファイル名は確定的であるため、ファイル名をデータベースに保存する必要もありません。

于 2013-09-12T10:25:21.253 に答える