HTML5 التخزين في وضع عدم الاتصال. ملف التخزين؟ الدلائل ونظام الملفات API

StackOverflow https://stackoverflow.com/questions/3936736

سؤال

لتخزين البيانات غير متصلة بالإنترنت يمكن استخدامها:

ولكن على ما يبدو لا يوجد تخزين ملفات. بالطبع ، هناك أ التخزين المؤقت القائم على القائمة, ، لكنها مجرد ذاكرة التخزين المؤقت وليس من المفترض أن يتم استخدامها كتخزين لبيانات المستخدم.

هل يعني ذلك أن مستخدم WebApp مجبر على استخدام نوع من تخزين الملفات السحابية؟

هل هناك أي طريقة لحفظ الملفات الكبيرة على الجهاز المحلي للمستخدم؟ أو ربما بطريقة ما لتحديد تطبيق ويب للمجلد المحلي يمكن استخدامه لتخزين بيانات المستخدم؟

يحرر. حماية. لدى HTML5 بالفعل القدرة على كتابة أجزاء كبيرة من البيانات إلى الجهاز المحلي للمستخدم. لا أرى أي مشكلات أمان إذا كان المتصفح سيوفر تجريدًا آخر قائم على الملفات لتخزين البيانات. يمكن أن يكون بعض الجهاز الظاهري ، نظام الملفات الافتراضية ، أيا كان.

أعتقد أنه من الممكن كتابة نظام ملفات JS وتخزينه على أنه نقطة في SQL ...

مماثل أسئلة.

تحديث: HM ... لقد وجدت مؤخرًا هذه و هذه. ربما هذا ما أبحث عنه ... نعم ، إنه! انظر الجواب أدناه.

هل كانت مفيدة؟

المحلول

في النهاية ، لقد وجدت ذلك! هذا هو الجواب:

سآخذ نظام DomFilesystem مع جانب من القراءة/الكتابة من فضلك كتب:

يعمل إريك أورهان من Google على مسودة عمل واجهة برمجة تطبيقات الملف: الدلائل ومواصفات النظام الذي يحدد مجموعة من واجهات برمجة التطبيقات لإنشاء نظام ملفات Sandboxed حيث يمكن لتطبيق الويب قراءة وكتابة البيانات إليها.

رائع! أنا متحمس جدا!

نصائح أخرى

لماذا لا تستخدم localStorage بينما يقوم المستخدم بتحرير مستند و FileWriter API عندما يريدون حفظه على القرص؟ يعتاد معظم الناس على رؤية مربع حوار حفظ يطفو على السطح عند حفظ وثيقة.

السيناريو الوحيد الذي يمكنني التفكير فيه في ذلك أوامر الوصول بدون مستخدم إلى FileWriter API هي ميزة Autosave ، ولكنها تلقائيًا localStorage يمكن أن تكون جيدة بنفس القدر.

هناك طريقة لحفظ ملفات كبيرة نسبيًا على محرك أقراص ثابتة للمستخدمين إذا كنت على استعداد لاستخدام Flash. ابحث في التنزيل:

http://www.bitrepository.com/downloadify-cide-file-generation.html

يتيح لك Downloadify إرسال البيانات إلى SWF و SWF إنشاء ملف على جهاز المستخدمين. تتمثل توصيتي في تخزين البيانات عبر إحدى الطرق التي أدرجتها ، و WebStorage ، وقاعدة بيانات SQLite ، وما إلى ذلك. ضع جميع أصولك ، بما في ذلك SWF في ملف البيان بحيث يتم تخزين كل شيء محليًا للمتصفح. يمكنك بعد ذلك سحب المعلومات من DB أو WebStorage واستخدام SWF لإنشاء الملفات التي تحتاجها.

لست متأكدًا مما إذا كنت ستتمكن من قراءة هذه الملفات مرة أخرى في تطبيق الويب الخاص بك.

خيار آخر لحفظ البيانات هو باستخدام علامات الارتباط مع مخطط URI للبيانات. ومع ذلك ، لست متأكدًا مما إذا كان مدعومًا في جميع المتصفحات الرئيسية في الوقت الحالي.

لأسباب أمنية ، لا يمكنك كتابة ملفات إلى نظام الملفات المحلي للمستخدم في حالة استخدامه لأغراض شريرة من قبل الأشرار.

من غير المحتمل أن يتغير هذا ، وهذا شيء جيد.

بدأت واجهة برمجة تطبيقات نظام ملفات HTML5 في Chrome 8 وهي كاملة إلى حد ما حتى الآن (Chrome 11).

هناك برنامج تعليمي لطيف هنا: http://www.html5rocks.com/tutorials/file/filesystem/

http://fsojs.com يلف واجهة برمجة تطبيقات نظام الملفات بشكل فعال ، إذا كنت تريد حلًا سهلاً

كما ذكر الآخرين هنا ، filewriter و نظام الملفات يمكن استخدام واجهات برمجة التطبيقات لتخزين الملفات على جهاز العميل من سياق علامة التبويب/نافذة المتصفح.

ومع ذلك ، هناك العديد من الأشياء المتعلقة بهذه واجهات برمجة التطبيقات التي يجب أن تكون على دراية بها:

  • تطبيقات واجهات برمجة التطبيقات موجودة حاليًا فقط في المتصفحات القائمة على الكروم (Chrome & Opera)
  • تم إخراج كل من واجهات برمجة التطبيقات من مسار معايير W3C في 24 أبريل 2014 ، وحتى الآن أصبحوا ملكية خاصة
  • إمكانية إزالة واجهات برمجة التطبيقات (الآن الملكية) من تنفيذ المتصفحات في المستقبل
  • أ صندوق الرمل (موقع على القرص خارج الملفات التي لا يمكن أن تنتج أي تأثير) لتخزين الملفات التي تم إنشاؤها باستخدام واجهات برمجة التطبيقات
  • أ نظام الملفات الافتراضية (يتم استخدام هيكل الدليل الذي لا يوجد بالضرورة على القرص في نفس النموذج الذي يقوم به عند الوصول إليه من داخل المتصفح) تمثل الملفات التي تم إنشاؤها باستخدام واجهات برمجة التطبيقات

معزولة, ، الذي لم يتم ذكره حتى الآن ، يسمح أيضًا بملف الإدخال/الإخراج من سياق علامة تبويب/نافذة ، ولكن يتم توفيره من خلال Silverlight فقط ويتطلب استخدام رمز مُدار للوصول. إنه ، مثل نظام الملفات ، موجود أيضًا في صندوق الرمل ويستخدم نظام الملفات الظاهري.

بالنظر إلى تغلغل السوق العالي لكل من المتصفحات المستندة إلى الكروم و Silverlight (والتي ، من المثير للاهتمام أن هذه المتصفحات قد تم إسقاطها ، قد تجد حلًا يستخدم أول الأساليب المذكورة أعلاه على جهاز العميل مرضيًا.

السلع المخبوزة, تعد مكتبة JavaScript التي تنشئ واجهة موحدة يمكن استخدامها لإجراء عمليات تخزين مشتركة في جميع مرافق التخزين غير الأصلية (بما في ذلك المعزولة) ، مثالًا على مثل هذا الحل:

//Write file to first of either FileSystem or IsolatedStorage
bakedGoods.set({
    data: [{key: "testFile", value: "Hello world!", dataFormat: "text/plain"}],
    storageTypes: ["fileSystem", "silverlight"],
    options: {fileSystem:{storageType: Window.PERSISTENT}},
    complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});

فقط من أجل الشفافية الكاملة ، يتم الحفاظ على Bakedgoods من قبل هذا الرجل هنا :).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top