Cri*_*llo 3 javascript zip stream node.js
我有一个包含幻灯片阵列的对象。每个幻灯片都可以具有一个媒体参数,该参数包含指向图像或视频文件的网址,或者指向youtube或vimeo视频的链接。
我的目标是将幻灯片查看器压缩并在zip内压缩,我还必须从URL中获取图像或视频文件。
要创建zip,我目前使用的是Archiver,它可以正常工作,但我不知道如何将媒体文件放入zip中(可能),而不先将它们写入文件系统中。我认为我必须使用流,因为archiver.append()可以将流作为第一个参数,但是我不知道该怎么做。
我已经实现了一些代码来了解url是否指向文件,将文件的url写入数组(避免使用youtube或viemo url)。
这是创建zip的方式:
...
var urls_array = ["http://url1/file1.jpg", "http://url2/file2.png"]; //the array of urls I take the media files from
var zip = archiver('zip');
zip.pipe(res);
zip.directory(__dirname + '/../../zip/', 'slideshow');
zip.append( new Buffer( file ), { name: 'slideshow/assets/slides.json' });
zip.finalize();
Run Code Online (Sandbox Code Playgroud)
我想我必须循环url_array执行,并为每个url执行一次http.get()调用,但是我不明白如何.pipe()在zip中进行响应。
有谁可以帮助我吗?不要犹豫,问我更多信息:)
先感谢您。
您应该使用该request方法从远程URL创建流append,并将其作为第一个参数传递给archiver 的功能,如下所示:
for ( var slide in slides ) {
archive.append( request( slide.url ), { name: slide.name } );
}
Run Code Online (Sandbox Code Playgroud)
请参阅archiver.append文档(https://archiverjs.com/docs/module-plugins_zip-Zip.html#append)
希望能帮助到你。