PHP เปลี่ยนชื่อไฟล์ upload จากไฟล์ที่ผู้ใช้งานเลือก บทความนี้สอนเขียนโค้ดภาษา PHP เพื่อเปลี่ยนชื่อไฟล์ที่ผู้ใช้งานอัปโหลดเข้ามา โดยใช้คำสั่ง explode ร่วมกับ rand และ md5 เพื่อตั้งชื่อไฟล์ใหม่ สามารถเขียนโปรแกรมได้ดังนี้
ตัวอย่าง PHP เปลี่ยนชื่อไฟล์ upload
<form action="<?=$_SERVER['PHP_SELF'];?>" method="POST" enctype="multipart/form-data">
กรุณาเลือกไฟล์ <input type="file" name="file"><br/>
<input type="submit" value="อัปโหลดไฟล์">
</form>
<?php
isset( $_FILES['file']['tmp_name'] ) ? $file_tmp_name = $_FILES['file']['tmp_name'] : $file_tmp_name = "";
isset( $_FILES['file']['name'] ) ? $file_name = $_FILES['file']['name'] : $file_name = "";
if( !empty( $file_tmp_name ) && !empty( $file_name ) ) {
$e = explode(".", $file_name);
$file_name_new = md5($file_name.rand(1111,9999)).".".$e[count($e)-1];
echo "ชื่อไฟล์เดิมที่ผู้ใช้งานเลือก คือ ".$file_name;
echo "<br/>";
echo "ชื่อไฟล์ใหม่ที่ถูกเปลี่ยน คือ ".$file_name_new;
}
?>
ผลลัพธ์
ชื่อไฟล์เดิมที่ผู้ใช้งานเลือก คือ demo.txt
ชื่อไฟล์ใหม่ที่ถูกเปลี่ยน คือ 60c104a8a5bfbd73acd4683c41f8ba4c.txt
PHP เปลี่ยนชื่อไฟล์ upload จากตัวอย่างชื่อไฟล์เดิมเก็บไว้ที่ตัวแปร file_name โดยมีลำดับขั้นการปลี่ยนชื่อไฟล์ upload ดังนี้
1. ใช้คำสั่ง explode แยกชื่อ กับนามสกุลของไฟล์ออก โดยใช้ตัวอักษรแยกคือจุด (.)
2. ชื่อไฟล์ upload ใหม่ ให้นำชื่อไฟล์เดิมมาต่อท้ายด้วยตัวเลขที่สุ่มระหว่าง 1111-9999 เพื่อโอกาสชื่อไฟล์ซ้ำ และเข้ารหัสด้วย md5 จากนั้นต่อ string ด้วยอักษรจุด (.) และนามสกุลไฟล์ ได้จาก $e[count($e)-1]
3. แสดงผลชื่อไฟล์เดิมที่ upload กับชื่อไฟล์ใหม่ที่ถูกเปลี่ยน