HTML5 Filesystem הוא ממשק 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
. אם אתם משתמשים באפשרות השנייה, המשתמש צריך להעניק לאפליקציה הרשאה מפורשת לאחסון מתמיד. בפוסט הזה מוסבר איך עושים את זה.כתובת ה-URL של
filesystem:
FTW. כדאי לפתוח את כתובת ה-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, localStorage ודברים ב-FileSystem API. עם זאת, חשוב לדעת שזו פעולה גורפת – כל הנתונים יימחקו או לא יימחקו. אי אפשר להסיר רק קובץ אחד או קטעי נתונים.לא לשכוח את קריאות החזרה (callbacks) של שגיאות. Filesystem API פועל בסביבה אסינכררונית (אלא אם משתמשים בגרסה הסינכרנית ב-Workers). תמיד צריך להשתמש בקריאה חוזרת (callback) של שגיאה בקריאות ל-API. הם אופציונליים, אבל כדאי להשתמש בהם כדי לחסוך לעצמכם הרבה צרות בהמשך.