سؤال

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

كمثال حقيقي: هناك متغير يحتوي على النص "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 إلى المثال الأول؟

لا أعتقد أن هذا ممكن لأسباب السلامة

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