<?php
header ('Content-Type: text/html; charset=utf-8');
$maxsize = 1000 * 1024; // ขนาด แก้ตรง 1000 เป็นตัวอื่น ตอนนี้เป็น 1 MB/รูป
$baseurl = '/upload/files/'; //url ไปโฟลเดอร์ที่เก็บรูป อย่าลืมปิดท้ายด้วย /
$basedir = 'files/'; // สอดคล้องกับโฟลเดอร์ในสุดของ baseurl ด้านบน
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/1999/xhtml">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!--
-
- the DtTvB's Mini Image Uploader
- by the DtTvB [http://dt.in.th/]
-
- Inspired by f0nt forum's one.
- [http://www.f0nt.com/forum/]
-
-->
<title>Upload</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>
<body>
<?php
if (isset($_FILES['userfile'])) {
function show_error($msg) {
echo '<strong>Error: </strong>' . $msg . ' — <a href="">Back</a>';
return true;
}
$extensions = array(
IMAGETYPE_GIF => '.gif',
IMAGETYPE_JPEG => '.jpg',
IMAGETYPE_PNG => '.png',
IMAGETYPE_SWF => '.swf',
IMAGETYPE_SWC => '.swf'
);
$creators = array(
IMAGETYPE_GIF => 'imagecreatefromgif',
IMAGETYPE_JPEG => 'imagecreatefromjpeg',
IMAGETYPE_PNG => 'imagecreatefrompng'
);
function get_random_text() {
return base_convert(time(), 10, 36) . '-' . substr(md5(microtime()), 8, 6);
}
function get_upload_fname($p, $a) {
do {
$name = $p . get_random_text() . $a;
} while (file_exists($GLOBAL['basedir'] . $name));
return $name;
}
do {
if ($_FILES['userfile']['size'] < 1 || $_FILES['userfile']['size'] > $maxsize) {
show_error ('ไฟล์เกินขนาด หรือ ไม่มีภาพที่เลือก ครับ');
break;
}
if ($_FILES['userfile']['error']) {
show_error ('เกิดข้อผิดพลาดขณะอัพโหลด');
break;
}
$imagesize = @getimagesize($tmp_name = $_FILES['userfile']['tmp_name']);
if (empty($imagesize)) {
show_error ('ไม่สนับสนุนไฟล์นามสกุลนี้ครับ');
break;
}
if (!in_array($imagesize[2], array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_SWF, IMAGETYPE_SWC))) {
show_error ('ไม่สนับสนุนไฟล์นามสกุลนี้ครับ');
break;
}
$xt = $extensions[$imagesize[2]];
$cr = $creators[$imagesize[2]];
$ow = $imagesize[0];
$oh = $imagesize[1];
if ($imagesize[2] == IMAGETYPE_SWF || $imagesize[2] == IMAGETYPE_SWC) {
$fname = get_upload_fname('flash/', $xt);
move_uploaded_file ($tmp_name, $basedir . $fname);
$code = '[flash=' . $ow . ',' . $oh . ']' . $baseurl . $fname . '[/flash]';
} else {
$fname = get_upload_fname('images/', $xt);
$code = '[img]' . $baseurl . $fname . '[/img]';
if (isset($_POST['thumb'])) {
do {
$nw = $ow;
$nh = $oh;
$ms = 196;
if ($nw > $ms) {
$nh = ($ms / $ow) * $oh;
$nw = $ms;
}
if ($nh > $ms) {
$nw = ($ms / $oh) * $ow;
$nh = $ms;
}
$nw = round($nw);
$nh = round($nh);
$om = @$cr($tmp_name);
if (!$om) break;
$im = imagecreatetruecolor($nw + 4, $nh + 15);
imagefill ($im, 0, 0, imagecolorallocate($im, 0, 0, 0));
imagecopyresampled ($im, $om, 2, 2, 0, 0, $nw, $nh, $ow, $oh);
imagestring ($im, 2, 2, $nh + 2, $ow . 'x' . $oh . ' - ' . $imagesize['mime'], imagecolorallocate($im, 255, 255, 255));
imagejpeg ($im, $basedir . 'thumb/' . $fname, 85);
$code = '[url=' . $baseurl . $fname . '][img]' . $baseurl . 'thumb/' . $fname . '[/img][/url]';
} while (false);
}
if (!@move_uploaded_file($tmp_name, $basedir . $fname)) {
show_error ('ไม่สามารถคัดลอกภาพได้');
break;
}
}
echo '
คัดลอกลิงค์รูปภาพไปใส่ในข้อความด้านบนนี้:
<div id="filefield">
<input type="text" style="width: 95%;" value="' . htmlspecialchars($code) . '" onmouseover="this.focus();this.select();" />
</div>
<a href="">กดที่นี่เพื่ออัพโหลดเพิ่ม</a>';
} while (false);
} else {
echo '
<div id="upload" style="display:none"><b>กำลังทำการอัพโหลด...</b>กรุณารอสักครู่</div>
<form enctype="multipart/form-data" action="" method="POST" onsubmit="this.style.display=\'none\';document.getElementById(\'upload\').style.display=\'block\';">
<font size="2" color="#d11010">กรณีจะแนบแท็กรูปภาพ ให้อัพรูปตรงนี้ แล้วก็อปปี้ลิงค์วางด้านบนครับ </font><br />
<div id="filefield">
<input type="hidden" name="MAX_FILE_SIZE" value="' . $maxsize . '" />
<input size="36" name="userfile" type="file" />
<input type="submit" value="Upload" />
</div>
</form>';
}
?>
</body>
</html>
smf ผมใช้ตัวนี้ครับแล้วแทรกเป็น ifram ที่หน้าโพส แล้วก็อบขึ้นอีกที ตามรูปครับ