สร้างฟอร์มและอัพโหลดไฟล์เข้าไปใน database และกำหนดให้มีการมีเปลี่ยนชื่อไฟล์โดยเอาเวลาไปไว้ข้างหน้าชื่อไฟล์เดิมเพื่อป้องกันชื่อไฟล์ซ้ำ
ก่อนอื่นเราต้องสร้าง table เพื่อเก็บชื่อไฟล์ใน database
ภาษา SQL
CREATE TABLE IF NOT EXISTS `uploadfile` ( `fileID` int(5) NOT NULL, `fileupload` varchar(200) CHARACTER SET utf8 NOT NULL, `dateup` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
ฟอร์มสำหรับ upload และแสดงไฟล์ที่เรา upload เข้าไป
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>UPLOAD FILE</title>
</head>
<body>
<?php
//1. เชื่อมต่อ database:
include('connection.php'); //ไฟล์เชื่อมต่อกับ database ที่เราได้สร้างไว้ก่อนหน้าน้ี
//2. query ข้อมูลจากตาราง:
$query = "SELECT * FROM uploadfile ORDER BY fileID asc" or die("Error:" . mysqli_error());
//3. execute the query.
$result = mysqli_query($con, $query);
//4 . แสดงข้อมูลที่ query ออกมา:
//ใช้ตารางในการจัดข้อมูล
echo "<table border='1' align='center' width='500'>";
//หัวข้อตาราง
echo "<tr align='center' bgcolor='#CCCCCC'><td>File ID</td><td>File</td><td>date_create</td></tr>";
while($row = mysqli_fetch_array($result)) {
echo "<tr>";
echo "<td align='center'>" .$row["fileID"] . "</td> ";
//echo "<td><a href='.$row['fileupload']'>showfile</a></td> ";
echo "<td>" .$row["fileupload"] . "</td> ";
echo "<td align='center'>" .$row["dateup"] . "</td> ";
echo "</tr>";
}
echo "</table>";
//5. close connection
mysqli_close($con);
?>
<br/>
<form action="add_file_db.php" method="post" enctype="multipart/form-data" name="upfile" id="upfile">
<p> </p>
<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="40" colspan="2" align="center" bgcolor="#D6D6D6">Form Upload File</td>
</tr>
<tr>
<td width="126" bgcolor="#EDEDED"> </td>
<td width="574" bgcolor="#EDEDED"> </td>
</tr>
<tr>
<td align="center" bgcolor="#EDEDED">File Browser</td>
<td bgcolor="#EDEDED"><label>
<input type="file" name="fileupload" id="fileupload" required="required"/>
</label></td>
</tr>
<tr>
<td bgcolor="#EDEDED"> </td>
<td bgcolor="#EDEDED"> </td>
</tr>
<tr>
<td bgcolor="#EDEDED"> </td>
<td bgcolor="#EDEDED"><input type="submit" name="button" id="button" value="Upload" /></td>
</tr>
<tr>
<td bgcolor="#EDEDED"> </td>
<td bgcolor="#EDEDED"> </td>
</tr>
</table>
<p> </p>
</form>
</body>
</html>ไฟล์ php ที่จะบันทึกข้อมูล (INSERT INTO) ที่กรอกในฟอร์มลงใน database ให้ตั้งชื่อไฟล์ว่า add_file_db.php นะครับ เพราะเราให้ฟอร์ม upload file ส่งค่า (action) มาที่ไฟล์นี้ หรือให้ทำงานต่อที่ไฟล์นี้ และไฟล์add_file_db.php ก็จะรับค่าเพื่อนำไปเก็บใน database ต่อไป
<meta charset="UTF-8">
<?php
//1. เชื่อมต่อ database:
include('connection.php'); //ไฟล์เชื่อมต่อกับ database ที่เราได้สร้างไว้ก่อนหน้าน้ี
$fileupload = $_REQUEST['fileupload']; //รับค่าไฟล์จากฟอร์ม
$date = date("d-m-Y"); //กำหนดวันที่และเวลา
//เพิ่มไฟล์
$upload=$_FILES['fileupload'];
if($upload <> '') { //not select file
//โฟลเดอร์ที่จะ upload file เข้าไป
$path="fileupload/";
//เอาชื่อไฟล์ที่มีอักขระแปลกๆออก
$remove_these = array(' ','`','"','\'','\\','/','_');
$newname = str_replace($remove_these, '', $_FILES['fileupload']['name']);
//ตั้งชื่อไฟล์ใหม่โดยเอาเวลาไว้หน้าชื่อไฟล์เดิม
$newname = time().'-'.$newname;
$path_copy=$path.$newname;
$path_link="fileupload/".$newname;
//คัดลอกไฟล์ไปเก็บที่เว็บเซริ์ฟเวอร์
move_uploaded_file($_FILES['fileupload']['tmp_name'],$path_copy);
}
// เพิ่มไฟล์เข้าไปในตาราง uploadfile
$sql = "INSERT INTO uploadfile (fileupload)
VALUES('$newname')";
$result = mysqli_query($con, $sql) or die ("Error in query: $sql " . mysqli_error());
mysqli_close($con);
// javascript แสดงการ upload file
if($result){
echo "<script type='text/javascript'>";
echo "alert('Upload File Succesfuly');";
echo "window.location = 'uploadfile.php'; ";
echo "</script>";
}
else{
echo "<script type='text/javascript'>";
echo "alert('Error back to upload again');";
echo "</script>";
}
?>กรณีอัพโหลดเป็นไฟล์ภาพ (.jpg) และต้องการให้แสดงภาพด้วยก็เอาโค๊ดจากไฟล์นี้
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>UPLOAD FILE</title>
</head>
<body>
<?php
//1. เชื่อมต่อ database:
include('connection.php'); //ไฟล์เชื่อมต่อกับ database ที่เราได้สร้างไว้ก่อนหน้าน้ี
//2. query ข้อมูลจากตาราง:
$query = "SELECT * FROM uploadfile" or die("Error:" . mysqli_error());
//3.เก็บข้อมูลที่ query ออกมาไว้ในตัวแปร result .
$result = mysqli_query($con, $query);
//4 . แสดงข้อมูลที่ query ออกมา โดยใช้ตารางในการจัดข้อมูล:
echo "<table border='1' align='center' width='500'>";
//หัวข้อตาราง
echo "<tr align='center' bgcolor='#CCCCCC'><td>filename</td><td> img </td></tr>";
while($row = mysqli_fetch_array($result)) {
echo "<tr>";
echo "<td>" .$row["fileupload"] . "</td> ";
echo "<td>"."<img src='fileupload/".$row[fileupload]."' width='100'>"."</td>";
echo "</tr>";
}
echo "</table>";
//5. close connection
mysqli_close($con);
?>
<br/>
<form action="add_file_db.php" method="post" enctype="multipart/form-data" name="upfile" id="upfile">
<p> </p>
<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="40" colspan="2" align="center" bgcolor="#D6D6D6">Form Upload File</td>
</tr>
<tr>
<td width="126" bgcolor="#EDEDED"> </td>
<td width="574" bgcolor="#EDEDED"> </td>
</tr>
<tr>
<td align="center" bgcolor="#EDEDED">File Browser</td>
<td bgcolor="#EDEDED"><label>
<input type="file" name="fileupload" id="fileupload" required="required"/>
</label></td>
</tr>
<tr>
<td bgcolor="#EDEDED"> </td>
<td bgcolor="#EDEDED"> </td>
</tr>
<tr>
<td bgcolor="#EDEDED"> </td>
<td bgcolor="#EDEDED"><input type="submit" name="button" id="button" value="Upload" /></td>
</tr>
<tr>
<td bgcolor="#EDEDED"> </td>
<td bgcolor="#EDEDED"> </td>
</tr>
</table>
</form>
</body>
</html>http://devbanban.com/?p=297