การอัปโหลดไฟล์ Laravel: บทช่วยสอนแบบทีละขั้นตอนที่ครอบคลุม
เผยแพร่แล้ว: 2024-10-07สารบัญ
การอัพโหลดไฟล์ Laravel
การอัพโหลดไฟล์เป็นคุณสมบัติที่สำคัญในเว็บแอปพลิเคชั่นจำนวนมาก ทำให้ผู้ใช้สามารถอัพโหลดไฟล์ได้หลายประเภท เช่น รูปภาพ เอกสาร หรือวิดีโอ Laravel ซึ่งเป็นเฟรมเวิร์ก PHP ยอดนิยม นำเสนอวิธีที่ราบรื่นและปลอดภัยในการจัดการการอัพโหลดไฟล์ ในบทช่วยสอนนี้ เราจะสำรวจวิธีการตั้งค่าและใช้งานการอัพโหลดไฟล์ใน Laravel ตั้งแต่เริ่มต้น ไม่ว่าคุณจะเป็นนักพัฒนามือใหม่หรือนักพัฒนาระดับกลาง คู่มือนี้จะช่วยให้คุณเชี่ยวชาญการอัพโหลดไฟล์ใน Laravel
1. รู้เบื้องต้นเกี่ยวกับการอัพโหลดไฟล์ Laravel
การอัปโหลดไฟล์เป็นส่วนสำคัญของเว็บแอปพลิเคชันสมัยใหม่ ไม่ว่าจะเป็นการอัพโหลดรูปโปรไฟล์ ประวัติย่อ หรือเนื้อหามัลติมีเดีย การมีระบบอัพโหลดไฟล์ที่เชื่อถือได้และปลอดภัยเป็นสิ่งสำคัญ Laravel ซึ่งมีฟังก์ชันในตัวทำให้กระบวนการนี้ตรงไปตรงมาและมีประสิทธิภาพ ด้วยการรองรับการตรวจสอบความถูกต้องของไฟล์ การจัดเก็บ และการรักษาความปลอดภัย Laravel นำเสนอวิธีที่ราบรื่นในการจัดการการอัพโหลดไฟล์
ในบทช่วยสอนนี้ เราจะ:
- สร้างแบบฟอร์มอัพโหลดไฟล์
- จัดการการตรวจสอบไฟล์
- จัดเก็บไฟล์บนเซิร์ฟเวอร์
- แสดงไฟล์ที่อัพโหลด
- รักษาความปลอดภัยกระบวนการอัพโหลดไฟล์
ในตอนท้ายของคู่มือนี้ คุณจะมีความเข้าใจที่ชัดเจนเกี่ยวกับวิธีการใช้งานและปรับแต่งการอัพโหลดไฟล์ในแอปพลิเคชัน Laravel
2. ข้อกำหนดเบื้องต้น
ก่อนที่จะเข้าสู่บทช่วยสอน ตรวจสอบให้แน่ใจว่าได้ติดตั้งสิ่งต่อไปนี้ในเครื่องของคุณ:
- PHP >= 8.0
- นักแต่งเพลง(ตัวจัดการการพึ่งพาสำหรับ PHP)
- Laravel 9 หรือสูงกว่า
- MySQL หรือ SQLiteสำหรับการจัดการฐานข้อมูล
- มีความรู้พื้นฐานเกี่ยวกับ Laravel และ PHP
หากคุณไม่คุ้นเคยกับวิธีตั้งค่า Laravel โปรดดูเอกสารอย่างเป็นทางการของ Laravel หรือใช้คำสั่งต่อไปนี้เพื่อสร้างโปรเจ็กต์ Laravel ใหม่:
ทุบตี
คัดลอกรหัส
ผู้แต่งสร้างโครงการ - ชอบ - แยกไฟล์ laravel / laravel - อัพโหลดไฟล์ - กวดวิชา
เมื่อสร้างโปรเจ็กต์แล้ว ให้ไปที่โฟลเดอร์โปรเจ็กต์:
ทุบตี
คัดลอกรหัส
สอนอัพโหลดไฟล์ cd
3. การตั้งค่าโครงการ Laravel
เมื่อตั้งค่าโปรเจ็กต์ Laravel ของคุณแล้ว ให้กำหนดการตั้งค่าพื้นฐาน:
การกำหนดค่าฐานข้อมูล:เปิด ไฟล์ .env ในไดเร็กทอรีรากและอัปเดตข้อมูลรับรองฐานข้อมูลของคุณ หากคุณใช้ MySQL ให้อัปเดตฟิลด์ต่อไปนี้:
ข้อความธรรมดา
คัดลอกรหัส
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_upload
DB_USERNAME=รูท
DB_รหัสผ่าน=
หลังจากกำหนดค่า ไฟล์ .env แล้ว ให้รันคำสั่งต่อไปนี้เพื่อย้ายตารางเริ่มต้น:
ทุบตี
คัดลอกรหัส
php artisan โยกย้าย
A. ติดตั้ง Bootstrap (ทางเลือก)
หากต้องการจัดรูปแบบแบบฟอร์มการอัปโหลด คุณสามารถรวม Bootstrap ไว้เพื่อความสะดวก ใน โฟลเดอร์ resources/views/layouts ให้สร้าง ไฟล์ layout.blade.php และรวม Bootstrap:
html
คัดลอกรหัส
<!DOCTYPE html>
<html lang=”th”>
<หัว>
<meta charset=”UTF-8″>
<meta name=”viewport” content=”width=device-width, default-scale=1.0″>
<title>บทช่วยสอนการอัพโหลดไฟล์</title>
<link href=”https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css” rel=”stylesheet”>
</หัว>
<ร่างกาย>
<div class=”คอนเทนเนอร์ mt-5″>
@ผลผลิต('เนื้อหา')
</div>
</ร่างกาย>
</html>
4. การสร้างแบบฟอร์มอัพโหลดไฟล์
ตอนนี้เรามาสร้างแบบฟอร์มการอัพโหลดไฟล์กันดีกว่า
สร้างคอนโทรลเลอร์:สร้างคอนโทรลเลอร์สำหรับจัดการการอัพโหลดไฟล์:
ทุบตี
คัดลอกรหัส
php artisan make: คอนโทรลเลอร์ FileUploadController
กำหนดแบบฟอร์ม:ใน โฟลเดอร์ resources/views ให้สร้างไฟล์ชื่อ upload.blade.php ด้วยโค้ดต่อไปนี้:
html
คัดลอกรหัส
@ ขยาย ('layouts.layout')
@section('เนื้อหา')
<คลาส div=”แถว”>
<คลาส div=”col-md-6 ออฟเซ็ต-md-3″>
<h3 class=”text-center”>อัปโหลดไฟล์</h3>
<form action=”{{ เส้นทาง ('file.upload.post') }}” method=”POST” enctype=”multipart/form-data”>
@csrf
<div class=”form-group mb-3″>
<label for=”file”>เลือกไฟล์:</label>
<ประเภทอินพุต =”ไฟล์” class=”ฟอร์มควบคุม” ชื่อ=”ไฟล์” id=”ไฟล์”>
@error('ไฟล์')
<small class=”text-danger”>{{ $message }}</small>
@enderror
</div>
<button type=”submit” class=”btn btn-primary”>อัพโหลด</button>
</แบบฟอร์ม>
</div>
</div>
@ส่วนท้าย
ตั้งค่าเส้นทาง:ใน ไฟล์ เส้นทาง/web.php ให้กำหนดเส้นทางสำหรับการแสดงแบบฟอร์มและจัดการการอัพโหลดไฟล์:
PHP
คัดลอกรหัส
ใช้แอป\Http\Controllers\FileUploadController;
เส้นทาง::get('upload', [FileUploadController::class, 'showForm'])->name('file.upload');
เส้นทาง::post('upload', [FileUploadController::class, 'uploadFile'])->name('file.upload.post');
5. การจัดการลอจิกการอัพโหลดไฟล์
ใน FileUploadController.php ให้เขียนตรรกะเพื่อจัดการกระบวนการอัพโหลดไฟล์:
แสดงแบบฟอร์ม:
PHP
คัดลอกรหัส
ฟังก์ชั่นสาธารณะ showForm() {
มุมมองย้อนกลับ ('อัปโหลด');
-
จัดการการอัพโหลดไฟล์:
ในคอนโทรลเลอร์เดียวกัน ให้เพิ่มวิธีการต่อไปนี้เพื่อจัดการการอัปโหลดไฟล์:
PHP
คัดลอกรหัส
ฟังก์ชั่นสาธารณะ uploadFile (ขอ $ คำขอ) {
// ตรวจสอบไฟล์ที่อัพโหลด
$คำขอ->ตรวจสอบ([
'file' => 'จำเป็น|ไฟล์|mimes:jpeg,png,pdf,docx|max:2048',
-
//เก็บไฟล์
ถ้า ($คำขอ->ไฟล์('ไฟล์')) {
$ชื่อไฟล์ = เวลา() . - $คำขอ->ไฟล์->getClientOriginalName();
$filePath = $request->file('file')->storeAs('uploads', $fileName, 'public');
-
return back()->with('success', 'อัพโหลดไฟล์สำเร็จ');
-
เมธอดนี้ดำเนินการตรวจสอบไฟล์ ตรวจสอบว่ามีไฟล์อยู่หรือไม่ และจัดเก็บโดยใช้ เมธอด storeAs
6. ตรวจสอบการอัพโหลดไฟล์
การตรวจสอบความถูกต้องถือเป็นสิ่งสำคัญเพื่อให้แน่ใจว่าผู้ใช้จะอัปโหลดเฉพาะประเภทและขนาดไฟล์ที่อนุญาตเท่านั้น วิธี การตรวจสอบ ของ Laravel ช่วยให้กระบวนการนี้ง่ายขึ้น กฎการตรวจสอบที่ใช้ที่นี่คือ:
- จำเป็น : ตรวจสอบให้แน่ใจว่าไฟล์ถูกอัพโหลด
- file : ตรวจสอบให้แน่ใจว่ารายการที่อัพโหลดเป็นไฟล์
- mimes : ระบุประเภทไฟล์ที่อนุญาต (เช่น jpeg, png, pdf, docx)
- max : ระบุขนาดไฟล์สูงสุดเป็นกิโลไบต์ (เช่น 2048 KB = 2 MB)
คุณสามารถปรับแต่งกฎเหล่านี้ให้เหมาะกับความต้องการของแอปพลิเคชันของคุณได้
7. การจัดเก็บไฟล์
ซุ้ม พื้นที่เก็บข้อมูล ของ Laravel ช่วยให้คุณจัดเก็บไฟล์ได้อย่างง่ายดาย ในตัวอย่างข้างต้น เราใช้ เมธอด storeAs เพื่อจัดเก็บไฟล์ใน ไดเร็กทอรี public/uploads หากต้องการให้ เข้าถึงโฟลเดอร์ สาธารณะ/อัปโหลด ได้ คุณจะต้องเชื่อมโยงไดเร็กทอรีพื้นที่เก็บข้อมูลกับโฟลเดอร์สาธารณะ รันคำสั่งต่อไปนี้:
ทุบตี
คัดลอกรหัส
ที่เก็บข้อมูล php artisan: ลิงก์
คำสั่งนี้สร้างลิงก์สัญลักษณ์จาก storage/app/public ไปยัง public/ storage
8. การแสดงไฟล์ที่อัพโหลด
หากต้องการแสดงไฟล์ที่อัพโหลด ให้เรียกค้นไฟล์เหล่านั้นจากโฟลเดอร์จัดเก็บข้อมูลและสร้าง URL โดยใช้ ส่วนหน้าของ พื้นที่เก็บข้อมูล ต่อไปนี้เป็นวิธีแสดงรูปภาพหรือไฟล์:
ในตัวควบคุม:
PHP
คัดลอกรหัส
ฟังก์ชั่นสาธารณะ showUploads() {
$files = Storage::disk('public')->files('uploads');
มุมมองย้อนกลับ ('อัปโหลด', กะทัดรัด ('ไฟล์'));
-
- ในมุมมอง:
สร้าง ไฟล์ resources/views/uploads.blade.php :
html
คัดลอกรหัส
@ ขยาย ('layouts.layout')
@section('เนื้อหา')
<h3>ไฟล์ที่อัพโหลด:</h3>
<ul>
@foreach($ไฟล์เป็น $file)
<li><a href=”{{ สินทรัพย์('storage/' . $file) }}”>{{ basename($file) }}</a></li>
@endforeach
</ul>
@ส่วนท้าย
- นี่จะสร้างรายการไฟล์ที่อัพโหลดพร้อมลิงค์ดาวน์โหลด
9. การรักษาความปลอดภัยการอัพโหลดไฟล์
การอัพโหลดไฟล์อาจก่อให้เกิดความเสี่ยงด้านความปลอดภัยหากไม่ได้รับการจัดการอย่างเหมาะสม ต่อไปนี้คือแนวทางปฏิบัติที่ดีที่สุดในการรักษาความปลอดภัยในการอัปโหลดไฟล์:
- จำกัดประเภทไฟล์ที่อนุญาต: ตรวจสอบประเภทไฟล์โดยใช้ กฎ mimes เสมอ
- จำกัดขนาดไฟล์: จำกัดขนาดไฟล์เพื่อป้องกันการใช้ทรัพยากรเซิร์ฟเวอร์มากเกินไป
- ใช้การตั้งชื่อไฟล์ที่เหมาะสม: จัดเก็บไฟล์โดยใช้ชื่อเฉพาะเพื่อหลีกเลี่ยงการเขียนทับไฟล์ที่มีอยู่
- สแกนไฟล์: ลองใช้โปรแกรมป้องกันไวรัสหรือเครื่องมือสแกนไฟล์เพื่อตรวจจับการอัปโหลดที่เป็นอันตราย
- จำกัดการเข้าถึงแบบสาธารณะ: หลีกเลี่ยงการจัดเก็บไฟล์ที่ละเอียดอ่อนในไดเร็กทอรีที่สาธารณะสามารถเข้าถึงได้ คุณสามารถใช้ ไดเร็กทอรี พื้นที่เก็บข้อมูล ของ Laravel สำหรับไฟล์ส่วนตัวและสร้างตัวควบคุมเพื่อให้บริการได้อย่างปลอดภัย
10. บทสรุป
การอัพโหลดไฟล์เป็นคุณสมบัติที่สำคัญสำหรับเว็บแอปพลิเคชั่นจำนวนมาก และ Laravel ทำให้กระบวนการง่ายขึ้นด้วยเครื่องมือและฟังก์ชันในตัว ในบทช่วยสอนนี้ เราได้กล่าวถึงพื้นฐานของการตั้งค่าการอัปโหลดไฟล์ การตรวจสอบและจัดเก็บไฟล์ การแสดงไฟล์ และการรักษาความปลอดภัยของกระบวนการอัปโหลด ด้วยพื้นฐานนี้ คุณสามารถปรับแต่งและขยายฟังก์ชันการอัพโหลดไฟล์ให้เหมาะกับความต้องการของโปรเจ็กต์ของคุณได้