🔹 เกริ่นนำ
การอัปโหลดไฟล์เป็นฟีเจอร์พื้นฐานที่ใช้กันอย่างแพร่หลายในเว็บแอปพลิเคชัน เช่น อัปโหลดรูปภาพ เอกสาร หรือไฟล์แนบอื่น ๆ 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