اشکال زدایی API فایل سیستم

فایل سیستم HTML5 یک API قدرتمند است. با قدرت، پیچیدگی می آید. با پیچیدگی، ناامیدی‌های رفع اشکال بیشتر می‌شود. این یک واقعیت تاسف بار است که ابزارهای توسعه دهنده کروم در حال حاضر از API فایل سیستم پشتیبانی نمی کنند. اشکال زدایی آن را دشوارتر از آنچه باید باشد می کند. منظور من از مشکل، نوشتن کد برای فهرست کردن/حذف فایل‌ها در سیستم فایل است.

در طول تلاش‌هایم با Filesystem API، چند نکته را در طول مسیر انتخاب کردم که فکر می‌کردم به آنها منتقل کنم. هر نکته محدودیت‌های خاص خود را دارد، اما استفاده از ترکیبی از اینها 90 درصد راه را برای شما به ارمغان می‌آورد. در اینجا 5 مورد برتر آورده شده است:

  1. مطمئن شوید که از file:// اجرا نمی‌کنید . این یک اب زیر کاه است که بسیاری از مردم آن را نیش می زنند. Chrome محدودیت‌های امنیتی عمده‌ای را روی file:// اعمال می‌کند. بسیاری از APIهای فایل پیشرفته ( BlobBuilder ، FileReader ، Filesystem API،...) اگر برنامه را به صورت محلی از file:// اجرا کنید، خطا می‌کنند یا بی‌صدا خراب می‌شوند. اگر سرور وب ندارید، Chrome می‌تواند با پرچم --allow-file-access-from-files راه اندازی شود تا از این محدودیت امنیتی عبور کند. از این پرچم فقط برای اهداف آزمایشی استفاده کنید.

  2. SECURITY_ERR یا QUOTA_EXCEEDED_ERR مخوف . این معمولاً هنگام تلاش برای نوشتن داده‌ها اتفاق می‌افتد اما تحت تأثیر شماره 1 هستید. اگر اینطور نیست، احتمالاً سهمیه ندارید. دو نوع سهمیه وجود دارد که سیستم فایل را می توان با آنها باز کرد، TEMPORARY یا PERSISTENT . اگر از دومی استفاده می‌کنید، کاربر باید صریحاً به برنامه شما فضای ذخیره‌سازی دائمی بدهد. این پست را در مورد نحوه انجام این کار مشاهده کنید.

  3. filesystem: URL FTW . باز کردن filesystem: URL برای root DirectoryEntry مبدا برنامه شما. معنی آن چیست؟ برای مثال، اگر برنامه شما در www.example.com زندگی می کند، filesystem:http://www.example.com/temporary/ در یک برگه جدید باز کنید. Chrome فهرستی فقط خواندنی از فایل‌ها/پوشه‌های ذخیره‌شده مبدا برنامه شما را نشان می‌دهد. برای اطلاعات بیشتر در مورد filesystem: URL ها، به https://www.html5rocks.com/en/tutorials/file/filesystem/#toc-filesystemurls مراجعه کنید.

  4. chrome://settings/cookies دوست شماست . این صفحه به شما امکان می دهد تا داده های ذخیره شده برای یک مبدا را هسته ای کنید. این شامل ذخیره‌سازی پایگاه داده، AppCache، کوکی‌ها، LocalStorage و موارد موجود در FileSystem API است. با این حال، از قبل آگاه باشید، این یک چیز همه یا هیچ است. شما نمی توانید فقط یک فایل یا تکه های داده را حذف کنید.

  5. تماس های خطا را فراموش نکنید . Filesystem API در یک دنیای ناهمزمان زندگی می کند (مگر اینکه از نسخه همگام سازی در Workers استفاده کنید). همیشه در تماس های API خود از پاسخ به خطا استفاده کنید. آنها اختیاری هستند، اما بعداً وقتی همه چیز منفجر شد، از غم و اندوه زیادی خلاص خواهید شد.