🔹 เกริ่นนำ
Laravel รองรับการจัดเก็บไฟล์ในหลาย “disk” หรือพื้นที่เก็บไฟล์ เช่น local, public และ cloud (Amazon S3, FTP, SFTP ฯลฯ) ผ่านระบบ Filesystem abstraction ทำให้คุณสามารถเขียนโค้ดเดียวกันเพื่อจัดการไฟล์ ไม่ว่าคุณจะเก็บไว้ที่เครื่องหรือบน cloud
บทนี้จะอธิบายวิธีตั้งค่าและใช้งาน local storage และ cloud storage ด้วย S3 อย่างถูกต้อง
🔸 การตั้งค่า Disk ใน config/filesystems.php
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
],
]
🔸 ตัวอย่างการบันทึกไฟล์ไปยัง Local
Storage::disk('local')->put('text/file.txt', 'Hello Laravel');
🔸 ตัวอย่างการบันทึกไฟล์ไปยัง S3
Storage::disk('s3')->put('images/photo.jpg', $request->file('photo'));
🔸 การอ่านไฟล์ / ลบไฟล์
Storage::disk('s3')->get('images/photo.jpg');
Storage::disk('s3')->delete('images/photo.jpg');
💡 คุณสามารถสลับ disk ได้ง่ายโดยใช้
Storage::disk('ชื่อ')
🔸 การใช้งานร่วมกับ .env
FILESYSTEM_DISK=s3
AWS_ACCESS_KEY_ID=your_key
AWS_SECRET_ACCESS_KEY=your_secret
AWS_DEFAULT_REGION=ap-southeast-1
AWS_BUCKET=your_bucket