Devdit
 

PHP เปลี่ยนชื่อไฟล์ upload จากไฟล์ที่ผู้ใช้งานเลือก

2.5K

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 กับชื่อไฟล์ใหม่ที่ถูกเปลี่ยน

แก้ไข 2 ปีที่แล้ว
ชอบ
ลิ้งก์
แชร์
Devdit มีช่อง YouTube แล้ว
เราสร้างวิดีโอเกี่ยวกับเทคโนโลยี ทำตามง่ายๆ