0

サーバーに画像をアップロードするための PHP 関数があります。

しかし、私は混乱しています。現在アップロードされているファイルに一意の md5 名を付けたいと思っています。これが私のコードです:

if ((getimagesize($_FILES['user_image']['tmp_name']) >0) && $_FILES['user_image']['size'] > 0 && ($_FILES['user_image']['size'] < 1048576)){

        $uploaddir  = DIR.'/images/';
        $uploadfile = $uploaddir . basename($_FILES['user_image']['name']);
        move_uploaded_file($_FILES['user_image']['tmp_name'], $uploadfile);

        // check if user have already uploaded an image, then delete 
        //it before uploading new one

        $old_file = db_user_image($user, 'image');
        if (strlen($old_file)){ 
            $delete = $uploaddir.$old_file;
            if (file_exists($delete))  
                unlink ($delete); 
        }

        db_save_user_image($user, 'image', $_FILES['user_image']['name']) ;

}   

このファイルに一意の md5 名を付ける方法を教えてください。

4

4 に答える 4

2

Change your $uploadfile declaration as follows:

$ext = pathinfo( $_FILES['user_image']['name'], PATHINFO_EXTENSION);
$uploadfile = $uploaddir . md5(basename($_FILES['user_image']['name']) ).$ext;
于 2013-10-20T10:23:53.507 に答える
1

If all you want is give md5 names to the files, you need to change line

$uploadfile = $uploaddir . basename($_FILES['user_image']['name']);

to

$uploadfile = $uploaddir . md5(basename($_FILES['user_image']['name']));

And

db_save_user_image($user, 'image', $_FILES['user_image']['name']) ;

to

db_save_user_image($user, 'image', md5(basename($_FILES['user_image']['name'])));
于 2013-10-20T10:23:42.883 に答える
1

Just replace basename on md5.

basename returns trailing name component of path

于 2013-10-20T10:23:53.333 に答える
0

タイムスタンプを追加し、を使用して暗号化しましmd5()た。ファイルの一意の名前を生成する必要があります。

   $targetFile = md5(time()).$_FILES['user_image']['name'];

$targetFileスクリプトの代わりに使用さ$_FILES['user_image']['name']れます。

//Code
if ((getimagesize($_FILES['user_image']['tmp_name']) >0) && $_FILES['user_image']['size'] > 0 && ($_FILES['user_image']['size'] < 1048576)){

    $uploaddir  = DIR.'/images/';
    $targetFile = md5(time()).$_FILES['user_image']['name'];
    $uploadfile = $uploaddir.$targetFile;
    move_uploaded_file($_FILES['user_image']['tmp_name'], $uploadfile);

    // check if user have already uploaded an image, then delete 
    //it before uploading new one

    $old_file = db_user_image($user, 'image');
    if (strlen($old_file)){ 
        $delete = $uploaddir.$old_file;
        if (file_exists($delete))  
            unlink ($delete); 
    }

    db_save_user_image($user, 'image', $targetFile) ;

}

于 2013-10-20T10:30:56.920 に答える