Я работаю над своим проектом с открытым исходным кодом Downloadify, и до сих пор он просто обрабатывал возвращаемые строки в ответ на ExternalInterface.call команды.
Я пытаюсь собрать тестовый пример, используя JSZip и Downloadify вместе, конечным результатом является то, что Zip-файл создается динамически в браузере, а затем сохраняется на диск с помощью FileReference.save. Однако это моя проблема:
Библиотека JSZip может возвращать либо закодированную base64 строку Zip, либо строку необработанных байтов. Проблема в том, что если я возвращаю эту байтовую строку в ответ на команду ExternalInterface.call, я получаю эту ошибку:
Error #1085: The element type "string" must be terminated by the matching end-tag "</string>"
ActionScript 3:
var theData:* = ExternalInterface.call('Downloadify.getTextForSave',queue_name);
Где queue_name — это просто строка, используемая для идентификации правильного экземпляра в JS.
JavaScript:
var zip = new JSZip();
zip.add("test.txt", "Hello world!\n");
var content = zip.generate(true);
return content;
Если вместо строки байтов я верну обычную строку, вызов будет работать правильно. Я хотел бы избежать использования base64, поскольку мне пришлось бы включать декодер base64 в мой swf, что увеличит его размер.
Наконец: я не ищу генератор AS3 Zip. Для моего проекта обязательно, чтобы эта часть выполнялась на JavaScript
По общему признанию, я не программист AS3 по профессии, поэтому, если вам нужна дополнительная информация, дайте мне знать.