Dev to webs {Coding…}

ร บทเรียนฟรีด้านการพัฒนาซอฟต์แวร์ ที่ครอบคลุมเนื้อหาหลากหลาย ตั้งแต่การเขียนโค้ดพื้นฐานไปจนถึงเทคนิคขั้นสูง

บทที่ 35: การจัดการ File Upload

🔹 เกริ่นนำ

การอัปโหลดไฟล์เป็นฟีเจอร์พื้นฐานที่ใช้กันอย่างแพร่หลายในเว็บแอปพลิเคชัน เช่น อัปโหลดรูปภาพ เอกสาร หรือไฟล์แนบอื่น ๆ Laravel มีเครื่องมือที่ช่วยให้การจัดการไฟล์อัปโหลดง่าย ปลอดภัย และยืดหยุ่น

บทนี้จะอธิบายขั้นตอนการอัปโหลดไฟล์จากฟอร์ม การตรวจสอบชนิดและขนาดไฟล์ด้วย Validation และการจัดเก็บไฟล์ไว้ในระบบ Storage ของ Laravel อย่างถูกต้อง

🔸 ฟอร์ม Blade สำหรับอัปโหลดไฟล์

<form action="/upload" method="POST" enctype="multipart/form-data">
    @csrf
    <label for="photo">เลือกรูปภาพ:</label>
    <input type="file" name="photo" id="photo">
    <button type="submit">อัปโหลด</button>
</form>

🔸 การจัดการใน Controller

use Illuminate\Http\Request;

public function upload(Request $request)
{
    $request->validate([
        'photo' => 'required|image|mimes:jpg,jpeg,png|max:2048',
    ]);

    if ($request->hasFile('photo')) {
        $path = $request->file('photo')->store('uploads', 'public');
        // บันทึก path หรือทำงานต่อได้เลย
    }
}

💡 store('uploads', 'public') จะเก็บไฟล์ไว้ที่ storage/app/public/uploads และสามารถเข้าถึงได้ผ่าน symbolic link ไปยัง public/storage

🔸 การสร้าง symbolic link

php artisan storage:link