|
|
|
แก้ไข file upload คือผมต้องการแก้ไข file ที่ดึงชื่อออกมาจากฐานข้อมูล แล้วถ้ามีไฟล์ให้แสดง path |
|
|
|
|
|
|
|
Code (PHP)
<?
if (isset($_POST["send"]))
{
$count = 0;
for($i=1;$i<=5;$i++)
{
if (validate_form($err,$i))
++$count;
}
echo "<u>ได้รับ ".$count." ไฟล์ถูกที่ส่งมาแล้ว</u><p>";
if($count<=5)
{
for($i=1;$i<=5;$i++)
{
if (validate_form($err,$i))
process_form($i,$comment[$i]);
}
}
?>
<FORM METHOD=POST ACTION="<?print($_SERVER['PHP_SELF']);?>">
<INPUT TYPE="submit" value="Back">
</FORM>
<?
}
else
{
show_form();
}
function validate_form(&$err,$i) // Check File
{
$err = "";
if (!is_uploaded_file($_FILES["userfile$i"]['tmp_name']))
{
if (($_FILES["userfile$i"]['error'] == UPLOAD_ERR_INI_SIZE) or
($_FILES["userfile$i"]['error'] == UPLOAD_ERR_FORM_SIZE))
echo $err = "ไฟล์มีขนาดใหญ่กว่าที่กำหนด<br>";
elseif ($_FILES["userfile$i"]['error'] == UPLOAD_ERR_PARTIAL)
echo $err = "ข้อมูลของไฟล์ถูกส่งมาไม่ครบ<br>";
elseif ($_FILES["userfile$i"]['error'] == UPLOAD_ERR_NO_FILE)
echo $err = " ";
} //end ifelse
else
{ //ส่งไฟล์สำเร็จ ตรวจสอบขนาดและประเภทต่อไป
/* ตรวจสอบขนาดไฟล์อีกทีเพื่อความแน่ใจ (ไม่ควรไว้ใจ MAX_FILE_SIZE ในฟอร์ม เพราะผู้ใช้สามารถแก้ไขได้) */
define("MAX_SIZE", 500000);
if ($_FILES["userfile$i"]['size'] > MAX_SIZE)
echo $err = "ส่งไฟล์ที่ $i สำเร็จ แต่ไฟล์มีขนาดใหญ่กว่าที่กำหนด<br>";
//ตรวจสอบประเภทของไฟล์ ต้องเป็นรูปภาพแบบ GIF หรือ JPEG เท่านั้น
if (($_FILES["userfile$i"]['type'] != "image/gif") and
($_FILES["userfile$i"]['type'] != "image/jpeg") and
($_FILES["userfile$i"]['type'] != "image/pjpeg"))
echo $err = "ส่งไฟล์ที่ $i สำเร็จ แต่ไฟล์ที่ส่งมาไม่ใช่รูปภาพแบบ GIF หรือ JPEG<br>";
}
if ($err) return FALSE;
else return TRUE;
}//end function
function show_form() {
echo <<<HTMLBLOCK
<h3>ทดสอบการอัพโหลดแบบหลายไฟล์</h3>
<form action="{$_SERVER['PHP_SELF']}" method="POST" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="500000">
ไฟล์ที่ต้องการส่ง 1 : <input name="userfile1" type="file">
Comment 1 : <INPUT TYPE="text" NAME="comment[1]" size="30"><br>
ไฟล์ที่ต้องการส่ง 2 : <input name="userfile2" type="file">
Comment 2 : <INPUT TYPE="text" NAME="comment[2]" size="30"><br>
ไฟล์ที่ต้องการส่ง 3 : <input name="userfile3" type="file">
Comment 3 : <INPUT TYPE="text" NAME="comment[3]" size="30"><br>
ไฟล์ที่ต้องการส่ง 4 : <input name="userfile4" type="file">
Comment 4 : <INPUT TYPE="text" NAME="comment[4]" size="30"><br>
ไฟล์ที่ต้องการส่ง 5 : <input name="userfile5" type="file">
Comment 5 : <INPUT TYPE="text" NAME="comment[5]" size="30"><br>
*<font color="gray" size="-1">ส่งได้เฉพาะไฟล์รูปภาพแบบ GIF หรือ JPEG ที่มีขนาดไม่เกิน 500,000 ไบต์</font><br>
<input type="submit" name="send" value=" ส่งไฟล์ ">
</form>
HTMLBLOCK;
}
function process_form($i,$comment)
{
if ($_FILES["userfile$i"]['type'] == "image/gif")
$type = ".gif";
if($_FILES["userfile$i"]['type'] == "image/jpeg")
$type = ".jpg";
if($_FILES["userfile$i"]['type'] == "image/pjpeg")
$type = ".jpg";
$fname = md5(rand()); //Change file name to md5
$fname .= $type; //File Type
$dest = "pic/".$fname; //File Path
if (move_uploaded_file($_FILES["userfile$i"]['tmp_name'], $dest))
{
$link = mysql_connect("localhost", "root", "1234");
mysql_select_db("upload",$link);
mysql_query("set NAMES tis620");
$sql = "INSERT INTO photo VALUES ('', '".$comment."', '".$dest."')";
$result = mysql_query($sql);
if($result)
echo "บันทึกข้อมูลแล้ว<br>";
else
echo "เกิดข้อผิดพลาดในการบันทึกข้อมูล<br>";
echo "ได้รับไฟล์ $i ".$_FILES["userfile$i"]['name']." แล้ว<br>";
echo "ขนาดไฟล์ $i : ".$_FILES["userfile$i"]['size']." bytes<br>";
echo "MIME Type : ".$_FILES["userfile$i"]['type']."<br>";
echo "รายละเอียดภาพ ". $i ." : ".$comment."<p>";
echo "<img width=\"100\" height=\"100\"src='$dest'><p>";
echo "ที่อยู่ : <input type=\"text\" name=\"adress\" size=\"65\" value=\"http://localhost/myweb/$dest\"><br><p>"; // แสดงที่อยู่ของไฟล์
}
}//end function
?>
*ปล. ของผมเก็บไฟล์ภาพไว้ที่ myweb/pic นะครับ
ฐานข้อมูลใช้ 3 ฟิลด์
Id => auto_increment
desc => varchar
path => varchar
|
|
|
|
|
Date :
2009-09-22 14:40:54 |
By :
extenser |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่ได้ครับ มีแนวอื่นหรือบทเรียนป่าวครับ
|
|
|
|
|
Date :
2009-09-22 15:26:47 |
By :
มือใหม่ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|