Моя функция принимает jszip в качестве ввода
var input = new JSZip();
zip.file("some.gif","R0lGODdhBQAFAIACAAAAAP/eACwAAAAABQAFAAACCIwPkWerClIBADs=",{base64: true});
, затем выводит другой zip
var output = new JSZip();
output.file("mimetype", "application/epub+zip",{compression:"STORE"});
source.folder("").forEach(function(relativePath,file)
{
...// copy all but some unecessary file from input to output
output.file(file.name,file.content);
}
Вместо того, чтобы изменять ввод, я использую второй jszip, потому что:
- для выходного zip-файла требуется, чтобы некоторые файлы находились в начале zip-файла (порядок файлов нельзя изменить с помощью jszip прямо сейчас AFAIK).
- Я бы предпочел оставить ввод без изменений.
Сейчас это не работает, потому что input.file ("X"). Content не определен.
Почему я не могу прочитать содержимое?
Должен ли я go для чего-то вроде
Promise.all([
input.file("Hello.txt").async("text"),
input.file("images/smile.gif").async("uint8array")
...
]).then(function(result) {
var hello = result[0]; // text
var smile = result[1]; // uint8array
...
output.file("Hello.txt",result[0]);
...
});
? Будут ли некоторые "штрафы" при вызове asyn c на входе? (Jszip просто передаст внутреннее представление контента или потребует некоторой обработки)