画像をディレクトリに保存するタイプ。元ファイル名を記憶するロジックを省いているので画像種別にしたがって拡張子を付与します。
<?php
$imgdir = ''upimg/'';
while ((isset($_FILES['img']))&&(is_array($_FILES['img']))) {
if ($_FILES['img']['error'] !== UPLOAD_ERR_OK) {
$errmsg = 'Upload Aborted';
break;
}
$data = file_get_contents($_FILES['img']['tmp_name']);
$info = getimagesizefromstring($data);
$ext = '';
switch ($info[2]) {
case IMAGETYPE_GIF:
$ext = '.gif';
break;
case IMAGETYPE_JPEG:
$ext = '.jpg';
break;
case IMAGETYPE_PNG:
$ext = '.png';
break;
}
if ($ext === '') {
$errmsg = 'IMAGE TYPE ERROR';
break;
}
$name = sha1($data) . $ext;
if (move_uploaded_file($_FILES['img']['tmp_name'], $imgdir . $name)) {
$msg = 'Save to ' . $name;
} else {
$errmsg = 'can NOT save file';
}
break;
}
?>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="img" />
<input type="submit" name="submit" value="POST" />
</form>
<?php
if (isset($msg)) { printf('<div>%s</div>', $msg); }
if (isset($errmsg)) { printf('<div style="color:red">%s</div>', $errmsg); }