จัดการข้อผิดพลาดสำหรับ Cloud Storage ใน Flutter

บางครั้งเมื่อคุณสร้างแอป สิ่งต่างๆ อาจไม่เป็นไปตามแผนและเกิดข้อผิดพลาดขึ้น

หากไม่แน่ใจ ให้ดักจับข้อยกเว้นที่ฟังก์ชันส่งคืนมาและดูว่าข้อความแสดงข้อผิดพลาดระบุว่าอย่างไร

final storageRef = FirebaseStorage.instance.ref().child("files/uid");
try {
  final listResult = await storageRef.listAll();
} on FirebaseException catch (e) {
  // Caught an exception from Firebase.
  print("Failed with error '${e.code}': ${e.message}");
}

จัดการข้อความแสดงข้อผิดพลาด

ข้อผิดพลาดอาจเกิดขึ้นได้จากหลายสาเหตุ เช่น ไม่มีไฟล์ ผู้ใช้ไม่มีสิทธิ์เข้าถึงไฟล์ที่ต้องการ หรือผู้ใช้ยกเลิกการอัปโหลดไฟล์

หากต้องการวินิจฉัยปัญหาและจัดการข้อผิดพลาดอย่างเหมาะสม โปรดดูรายการข้อผิดพลาดทั้งหมดที่ไคลเอ็นต์จะแสดงและสาเหตุที่เกิดข้อผิดพลาด

รหัส คำอธิบาย
storage/unknown เกิดข้อผิดพลาดที่ไม่รู้จัก
storage/object-not-found ไม่มีออบเจ็กต์ในข้อมูลอ้างอิงที่ต้องการ
storage/bucket-not-found ไม่มีการกำหนดค่า Bucket สำหรับ Cloud Storage
storage/project-not-found ไม่มีการกำหนดค่าโปรเจ็กต์สำหรับ Cloud Storage
storage/quota-exceeded คุณใช้โควต้าใน Bucket เกินแล้ว Cloud Storage for Firebase กำหนดให้ต้องใช้แพ็กเกจราคา Blaze แบบจ่ายเมื่อใช้ หากคุณได้รับข้อผิดพลาดนี้ในโปรเจ็กต์ที่ใช้แพ็กเกจราคา Spark คุณต้องอัปเกรดเป็นแพ็กเกจราคา Blaze เพื่อเข้าถึงอีกครั้ง ดูรายละเอียดได้ที่คำถามที่พบบ่อย
storage/unauthenticated ผู้ใช้ไม่ได้รับการตรวจสอบสิทธิ์ โปรดตรวจสอบสิทธิ์แล้วลองอีกครั้ง
storage/unauthorized ผู้ใช้ไม่มีสิทธิ์ดำเนินการที่ต้องการ โปรดตรวจสอบกฎความปลอดภัยเพื่อให้แน่ใจว่ากฎถูกต้อง
storage/retry-limit-exceeded เกินขีดจำกัดเวลาสูงสุดในการดำเนินการ (อัปโหลด ดาวน์โหลด ลบ ฯลฯ) โปรดลองอัปโหลดอีกครั้ง
storage/invalid-checksum ไฟล์ในไคลเอ็นต์ไม่ตรงกับ Checksum ของไฟล์ที่เซิร์ฟเวอร์ได้รับ โปรดลองอัปโหลดอีกครั้ง
storage/canceled ผู้ใช้ยกเลิกการดำเนินการ
storage/invalid-event-name ชื่อเหตุการณ์ที่ระบุไม่ถูกต้อง ต้องเป็นหนึ่งใน [running, progress, pause]
storage/invalid-url URL ที่ระบุให้กับ refFromURL() ไม่ถูกต้อง ต้องอยู่ในรูปแบบ: gs://bucket/object หรือ https://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN>
storage/invalid-argument อาร์กิวเมนต์ที่ส่งไปยัง put() ต้องเป็น File, Blob หรืออาร์เรย์ UInt8 อาร์กิวเมนต์ที่ส่งไปยัง putString() ต้องเป็นสตริง Base64 หรือ Base64URL แบบดิบ
storage/no-default-bucket ไม่มีการตั้งค่า Bucket ในพร็อพเพอร์ตี้ storageBucket ของการกำหนดค่า
storage/cannot-slice-blob มักเกิดขึ้นเมื่อไฟล์ในเครื่องมีการเปลี่ยนแปลง (ลบ บันทึกอีกครั้ง ฯลฯ) โปรดลองอัปโหลดอีกครั้งหลังจากตรวจสอบว่าไฟล์ไม่มีการเปลี่ยนแปลง
storage/server-file-wrong-size ไฟล์ในไคลเอ็นต์มีขนาดไม่ตรงกับขนาดของไฟล์ที่เซิร์ฟเวอร์ได้รับ โปรดลองอัปโหลดอีกครั้ง