هل يمكن الوصول إلى جافا سكريبت نظام ملفات؟ [مكرر

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

سؤال

هذا السؤال لديه بالفعل إجابة هنا:

كنت متأكدا من أن الجواب كان رقم, وبالتالي Google Gears، Adobe Air، إلخ.

إذا كنت على حق، فكيف http://tiddlywiki.com. الشغل؟ إنه مستمر ومكتب في جافا سكريبت. إنه أيضا مجرد ملف HTML واحد لا يحتوي على تبعيات خارجية (خادم Server). ماهذا الهراء؟ أين / كيف تخزن دولته؟

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

المحلول

يحتوي TidDlywiki على العديد من طرق حفظ البيانات، اعتمادا على المستعرض المستخدم. كما ترون في المصدر.

  • إذا تم تمكين ActiveX، فإنه يستخدم Scripting.FilesystemObject.
  • على المتصفحات التي تتخذ من أبو بريص، تحاول استخدام UniversalXPConnect.
  • إذا تم تمكين Java، فإنه يستخدم تطبيق TidDlySaver Java الصغير.
  • إذا java liveConnect. تم تمكينه، يحاول استخدام فئات ملفات Java.

نصائح أخرى

ملف HTML5 [1]، FileWriter [2]، ونظام الملفات [3] واجهات برمجة التطبيقات متوفرة في أحدث قناة مطور من جوجل كروم. يتيح لك API نظام الملفات قراءة / الكتابة إلى نظام ملفات Sandbox داخل المسافة يعرف المتصفح. لا يمكنك ذلك، على سبيل المثال، افتح مجلد "الصور الخاصة بي" على FS المحلي للمستخدم وقراءة / كتابة ذلك. هذا شيء في الأعمال، لكنه لن يكون جاهزا لفترة من الوقت. مثال على كتابة ملف:

window.requestFileSystem(
  TEMPORARY,        // persistent vs. temporary storage
  1024 * 1024,      // 1MB. Size (bytes) of needed space
  initFs,           // success callback
  opt_errorHandler  // opt. error callback, denial of access
);

function initFs(fs) {
  fs.root.getFile('logFile.txt', {create: true}, function(fileEntry) {

    fileEntry.createWriter(function(writer) {  // FileWriter

      writer.onwrite = function(e) {
        console.log('Write completed.');
      };

      writer.onerror = function(e) {
        console.log('Write failed: ' + e.toString());
      };

      var bb = new BlobBuilder();
      bb.append('Lorem ipsum');
      writer.write(bb.getBlob('text/plain'));

    }, errorHandler);
  }
}

ألق نظرة على هذا HTML5 سطح الشريحة تخزين لمزيد من مقتطفات التعليمات البرمجية.

يستخدم مراجع ملف Java مثل هذا:

drivers.tiddlySaver = {
        name: "tiddlySaver",
        deferredInit: function() {
            if(!document.applets["TiddlySaver"] && !$.browser.mozilla && !$.browser.msie && document.location.toString().substr(0,5) == "file:") {
                $(document.body).append("<applet style='position:absolute;left:-1px' name='TiddlySaver' code='TiddlySaver.class' archive='TiddlySaver.jar' width='1'height='1'></applet>");
            }
        },
        isAvailable: function() {
            return !!document.applets["TiddlySaver"];
        },
        loadFile: function(filePath) {
            var r;
            try {
                if(document.applets["TiddlySaver"]) {
                    r = document.applets["TiddlySaver"].loadFile(javaUrlToFilename(filePath),"UTF-8");
                    return (r === undefined || r === null) ? null : String(r);
                }
            } catch(ex) {
            }
            return null;
        },
        saveFile: function(filePath,content) {
            try {
                if(document.applets["TiddlySaver"])
                    return document.applets["TiddlySaver"].saveFile(javaUrlToFilename(filePath),"UTF-8",content);
            } catch(ex) {
            }
            return null;
        }
    }

من الناحية الفنية يمكنك القيام به

netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserWrite');

في متصفح متوافق مع Netscape (Firefox، Mozilla، Netscape)، وسوف يسأل المستخدم * سواء السماح بالوصول إلى نظام الملفات أم لا، ولكن هذا غير محمول.

* مرة واحدة لكل عملية متصفح

هل يمكن الوصول إلى جافا سكريبت نظام ملفات؟

ليس خارج منطقة الرمل المذكورة أعلاه، إلى حد علمي. ومع ذلك، يمكنه الوصول إلى تطبيق Java الموقد الذي يحتوي على طرق عامة يمكن الاتصال به والتي يمكن أن تصل إلى جميع الملفات. لقد فعلت ذلك ويعمل بشكل جيد وهو متصفح عبر.

جزء التوقيع هو متورط إلى حد ما والاستخدام الاحترافي، قد تحتاج إلى دفع تكاليف شهادة توقيع التعليمات البرمجية التي تخويل هويتك. احصل عليه من مكان مثل VeriSign. بهذه الطريقة يعرف المستخدمون على الأقل من يتم كتابته الصغير بواسطة (إذا كان ذلك يساعد). يمكنك التوقيع على نفسك مجانا ولكن سيتم حدوث أحد "مخاطر الأمان المحتملة" في الاستخدام الأول للاستخدام من قبل المستخدم.

كنت تعتقد أن هذه التطبيقات الموقعة لكتابة الملفات موجودة بالفعل للتحميل ولكني لم أستطع العثور على أي تبحث عن طريق. إذا فعلوا ذلك، فيمكنك فقط توصيله في صفحتك، وتعلم API وإيقاف تشغيلك.

الجواب ليس في الواقع. عادة ما تستخدم تطبيقات Java Applets، ومكونات الإضافات ActiveX اللعين إذا كان ذلك مطلوبا

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