การปรับปรุง API สำหรับการทำงานกับไฟล์ในเบราว์เซอร์

รองรับโปรแกรมอ่านและผู้เขียนแบบหลายรายสำหรับ FileSystemSyncAccessHandle และผู้เขียนแบบเฉพาะตัวสำหรับ FileSystemWritableFileStream

ผู้อ่านและผู้เขียนหลายรายสำหรับ FileSystemSyncAccessHandle

ระบบไฟล์ส่วนตัวดั้งเดิม (บางครั้งเรียกว่าระบบไฟล์ของที่เก็บข้อมูล) ช่วยให้นักพัฒนาซอฟต์แวร์เข้าถึงไฟล์ที่ได้รับการเพิ่มประสิทธิภาพเพื่อการอ่านและการเขียนสูงสุดได้ กรณีนี้เกิดขึ้นผ่านออบเจ็กต์ FileSystemSyncAccessHandle ปัจจุบันลองเปิดออบเจ็กต์ FileSystemSyncAccessHandle หลายรายการสำหรับรายการไฟล์เดียวกันแต่ไม่สำเร็จด้วย NoModificationAllowedError เนื่องจากมีกรณีการใช้งานที่ข้อจำกัดนี้ถูกจำกัดอยู่ Chrome 121 จึงแนะนำพารามิเตอร์ mode ใหม่สำหรับเมธอด FileSystemFileHandle.createSyncAccessHandle() ด้วยค่าสตริงที่อนุญาตต่อไปนี้

  • "readwrite": คือค่าเริ่มต้นปัจจุบัน เมื่อเปิดแล้ว วิธีการต่างๆ ใน FileSystemSyncAccessHandle จะได้รับอนุญาต อนุญาตอินสแตนซ์ของ FileSystemSyncAccessHandle เพียง 1 รายการเท่านั้น
  • "read-only" : รองรับผู้อ่านหลายคน เมื่อเปิดแล้ว อนุญาตให้ใช้เฉพาะเมธอดแบบอ่านใน FileSystemSyncAccessHandle เท่านั้น: read(), getSize() และ close() คุณสร้างอินสแตนซ์ FileSystemSyncAccessHandle ได้หลายรายการตราบใดที่อินสแตนซ์ทั้งหมดอยู่ในโหมดอ่านอย่างเดียว
  • "readwrite-unsafe": อนุญาตผู้เขียนหลายคน เมื่อเปิดแล้ว วิธีการต่างๆ ใน FileSystemSyncAccessHandle จะได้รับอนุญาต คุณสร้างอินสแตนซ์ FileSystemSyncAccessHandle ได้หลายรายการตราบใดที่อินสแตนซ์ทั้งหมดอยู่ในโหมดอ่านเขียนที่ไม่ปลอดภัย

การทำงานในปัจจุบันจะยังคงอยู่โดยเก็บตัวเลือก "readwrite" ไว้เป็นค่าเริ่มต้น ซึ่งอนุญาตครั้งละ 1 อินสแตนซ์เท่านั้น หากเว็บไซต์ต้องการเปิดออบเจ็กต์ FileSystemSyncAccessHandle หลายรายการ แต่ไม่จำเป็นต้องเขียน คุณควรใช้ตัวเลือก "read-only" สุดท้าย ตัวเลือกสุดท้าย "readwrite-unsafe" อนุญาตอินสแตนซ์ได้หลายรายการรวมทั้งการอ่านและเขียน ในกรณีนี้ การเขียนอาจเป็นแบบสำหรับผู้ใหญ่หากดำเนินการจากแท็บหลายแท็บ และเว็บไซต์จะต้องระบุรูปแบบการล็อกของตนเอง

const handle1 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
// This will succeed:
const handle2 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});

ผู้เขียนเฉพาะสำหรับ FileSystemWritableFileStream

ปัจจุบัน FileSystemWritableFileStream สามารถสร้างอินสแตนซ์ของ FileSystemWritableFileStream ได้หลายอินสแตนซ์ต่อรายการไฟล์ ซึ่งต่างจาก FileSystemSyncAccessHandle ข้อมูลที่ขาดหายไปคือวิธีให้ทางเลือกกับนักเขียนระดับเอ็กซ์คลูซีฟ Chrome 121 จะเพิ่มพารามิเตอร์ mode (ไม่บังคับ) ลงในเมธอด FileSystemAccessFileHandle.createWritable() ซึ่งมีค่าต่อไปนี้

  • โหมด "exclusive": มีผู้เขียนได้ครั้งละ 1 คนเท่านั้น
  • โหมด "siloed": นี่คือโหมดเริ่มต้นปัจจุบัน ผู้เขียนบทที่สร้างขึ้นแต่ละคนจะมีไฟล์สลับของตัวเอง
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

การสนับสนุนเบราว์เซอร์

ตั้งแต่ Chrome 121 เป็นต้นไป รองรับทั้งฟีเจอร์ ผู้อ่านและผู้เขียนหลายคนสำหรับ FileSystemSyncAccessHandle และผู้เขียนสำหรับ FileSystemWritableFileStream โดยเฉพาะ

เข้าสู่การทดลองใช้เวอร์ชันพัฒนา

หากต้องการเข้าสู่การทดลองใช้สำหรับนักพัฒนาซอฟต์แวร์เพื่อทดสอบฟีเจอร์ก่อนที่ Chrome 121 จะเปิดตัว ให้ตั้งค่าแฟล็ก #file-system-access-locking-scheme ใน chrome://flags เป็นเปิดใช้ วิธีนี้ช่วยให้คุณทดสอบฟีเจอร์นี้ในเครื่องได้

กิตติกรรมประกาศ

บทความนี้ได้รับการตรวจสอบโดย Daseul Lee, Nathan Memmott และ Rachel Andrew