2

ユーザーがプロフィール画像をアップロードできる Zend Framework アプリケーションを作成しています。使用できるファイルの種類は、png、jpg、および gif です。画像は、ユーザーの ID + ファイル拡張子として保存されます。

私が疑問に思っているのは、ユーザーが png または gif ファイルをアップロードしたとします。ファイル拡張子を jpg に変更しても安全ですか?

このようにして、すべてのプロフィール画像が同じファイル拡張子を持つことになります。このようにファイルタイプを変更することが良い考えかどうかはわかりません.

4

1 に答える 1

3

試したことがないので、本当にうまくいくかどうかはわかりませんが、ファイル拡張子を変更するのは得策ではないと思います。応答があった場合、ブラウザは画像を表示できませんでした。
私の意見では、アップロード後に gif/png 画像を jpeg 形式に変換し、最終的に元の画像を移動、名前変更、または削除して、変換された jpg 画像のみをアップロード フォルダーに残す必要があります。
たとえば、GD 拡張機能を有効にしている場合は、次のようにすることができます。

<?php

/**
 * Convert gif or png image to jpg format
 *  
 * @param string  original image file name
 * @param int     output image quality (0..100) 
 * @return string output jpg file name
 */
function img2jpeg($filename, $quality = 100) {
    if (file_exists($filename) && is_readable($filename)) {
        $p = pathinfo($filename);
        $ext = strtolower($p['extension']);
        if ($ext == "jpg") {
            return($filename);
        } else if ($img = imagecreatefromstring(file_get_contents($filename))) {
            $newname = $p['dirname'].'/'.$p['filename'].'.jpg';
            if (imagejpeg($img, $newname, $quality)) {
                imagedestroy($img);
                return($newname);
            } else {
                imagedestroy($img);
                die("Error creating ".$newname."\n");
            }
        }
    }
    die("Error loading ".$filename."\n");
}

?>
于 2012-09-17T20:45:13.740 に答える