מערכת הקבצים של HTML5 היא ממשק API חזק. עם כוח, יש מורכבות. התהליך מורכב, והתהליך הזה מוביל לתסכול רב יותר מניפוי באגים. לצערנו, ל-DevTools Chrome אין כרגע תמיכה ב-Filesystem API. הוא הופך את ניפוי הבאגים לקשה יותר ממה שהוא אמור להיות. המשמעות היא שנדרשת לכתוב קוד כדי להציג/להסיר קבצים במערכת הקבצים.
במהלך המאמצים שלי עם Filesystem API, קיבלתי כמה טיפים לאורך הדרך. לכל טיפ יש שורה של מגבלות משלו, אבל שימוש בשילוב של הקווים האלה יקנה לכם 90% מההוצאות. הנה 5 המובילים:
חשוב לוודא שהחשבון שלך לא פעיל מ-
file://
. זאת דוגמה מטעה שהרבה אנשים נוטשים בה. Chrome הגדיר הגבלות אבטחה חמורות עלfile://
. רבים מממשקי ה-API המתקדמים של קבצים (BlobBuilder
,FileReader
, Filesystem API,...) גורמים לשגיאות או נכשלים בצורה שקטה אם האפליקציה מופעלת באופן מקומי מ-file://
. אם אין לך שרת אינטרנט זמין, ניתן להפעיל את Chrome עם הדגל--allow-file-access-from-files
כדי לעקוף את הגבלת האבטחה הזו. יש להשתמש בסימון הזה למטרות בדיקה בלבד.SECURITY_ERR
אוQUOTA_EXCEEDED_ERR
של פחד. זה קורה בדרך כלל כשמנסים לכתוב נתונים, אבל המידע שלכם מושפע מגורמים 1. אם זה לא המצב, סביר להניח שאין לך מכסה. קיימים שני סוגי מכסות שבאמצעותם אפשר לפתוח את מערכת הקבצים,TEMPORARY
אוPERSISTENT
. אם אתם משתמשים באפשרות השנייה, המשתמש צריך להעניק לאפליקציה שלכם אחסון קבוע באופן מפורש. בפוסט הזה מוסבר איך לעשות זאת.FTW של
filesystem:
כתובת URL. כדאי לפתוח את כתובת ה-URLfilesystem:
בשורשDirectoryEntry
של מקור האפליקציה. למה הכוונה? לדוגמה, אם האפליקציה מוגדרת ב-www.example.com
, צריך לפתוח אתfilesystem:http://www.example.com/temporary/
בכרטיסייה חדשה. Chrome יציג רשימה לקריאה בלבד של הקבצים/התיקיות המאוחסנים במקור האפליקציה. מידע נוסף על כתובות URL מסוגfilesystem:
זמין בכתובת https://www.html5rocks.com/en/tutorials/file/filesystem/#toc-filesystemurls.chrome://settings/cookies
חבר/ה שלך. הדף הזה מאפשר למחוק נתונים המאוחסנים עבור מקור. זה כולל אחסון מסד נתונים, AppCache, קובצי cookie, אחסון מקומי ונתונים נוספים ב-FileSystem API. עם זאת, אל דאגה, זה הכול או כלום. אי אפשר להסיר רק קובץ אחד או פיסת נתונים אחת.חשוב לזכור על אירועי קריאה חוזרת (callback) של שגיאות. ה-Filesystem API פועל בעולם אסינכרוני (אלא אם אתם משתמשים בגרסת הסנכרון ב-Workers). יש להשתמש תמיד בקריאה חוזרת (callback) לשגיאה בקריאות ל-API. לא חובה לבצע את הפעולות האלה, אבל בהמשך יכולות להיות לך חסכונות רבה כשהמצבים יתפוצצו.