Dev to webs {Coding…}

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

บทที่ 2: การใช้งาน Local และ Cloud Storage (เช่น S3)

🔹 เกริ่นนำ

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