امتداد Chrome: تنزيل/تصدير محتوى تم إنشاؤه "On the Fly"
-
25-09-2019 - |
سؤال
أحتاج إلى السماح للمستخدم بتنزيل ملف تم إنشاؤه أثناء الطيران من بعض البيانات الواردة في الامتداد ، لكنني لا أريد القيام هذا من جانب الخادم.
كمثال حقيقي: هناك متغير يحتوي على النص "Hello World". أريد أن يكون المستخدم قادرًا على تنزيل/إنشاء أ .TXT
ملف يحتوي على مثل هذا النص.
هل هو ممكن ؟
-صدر 30 أكتوبر 2010-
الحلول حتى الآن:
window.saveas - لا تعمل على الإطلاق
CreateObjecturl - الأعمال ، ولكن لا يمكن تخصيص اسم الملف والخيارات الأخرى بعد
نسخ البيانات إلى الحافظة - أعمال ، ولكن هناك حاجة إلى العديد من الخطوات للمستخدم
إنشاء وثيقة googledocs - يمكن أن تعمل ، ولكن يحتاج إلى العبث مع API و Oauth
-تم تحريره في 15 أبريل 2011
يبدو أن الأمور تتحسن: https://github.com/eligrey/filesaver.js
لكن Chrome 14+ لا يزال غريبًا بعض الشيء حول أسماء الملفات.
المحلول
أعتقد أن الطريقة الوحيدة هي استدعاء مربع الحوار Save من خلال Flash ، انظر تنزيل مكتبة.
نصائح أخرى
في مجموعة Google Cronextions ، وجدت هذا المثال العاملة: (لقد قمت بتعديله للعمل من المنبثقة)
BuiltBlob = new BlobBuilder("");
BuiltBlob.append("Hello, world");
BlobToSave = BuiltBlob.getBlob();
chrome.tabs.create({'url': createObjectURL(BlobToSave), 'selected': false});
لكن اسم الملف لم يتم تعيينه ، ينتهي بشيء مثل cf8a56bf-d724-4b97-b10f-e252961135bd
على مستندات W3C ( http://dev.w3.org/2009/dap/file-system/file-writer.html ) لقد وجدت هذا لا يعمل مثال:
var bb = new BlobBuilder();
bb.append("Lorem ipsum");
var fileSaver = window.saveAs(bb.getBlob(), "test_file");
fileSaver.onwriteend = myOnWriteEnd;
لكن window.saveAs
لا يبدو أنه موجود.
لقد وجدت Google Around مراجع Google Gears التي عفا عليها الزمن ، ولكن لا شيء آخر ، ربما لأنني أتعامل مع شيء جديد جدًا بحيث لا يمكنني الحصول على وثائق مناسبة؟
هل هناك طريقة لتعيين اسم الملف/نوع MIME إلى المثال الأول؟
لا أعتقد أن هذا ممكن لأسباب السلامة