Node.js:如何从url添加文件到(archiverjs) zip



我有一个包含幻灯片数组的对象。每张幻灯片都可以有一个媒体参数,其中包含到图像或视频文件的url或到youtube或vimeo视频的链接。

我的目标是有幻灯片查看器压缩和内部的压缩,我也必须有图像或视频文件从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();

我想我必须循环url_array,并为每个url执行http.get()调用,但我无法理解如何.pipe() zip内的响应。

有人能帮我吗?请随时问我更多的信息。

提前感谢。

您应该使用request方法创建一个来自远程URL的流,作为第一个参数传递给归档器的append函数,如下所示:

for ( var slide in slides ) {
    archive.append( request( slide.url ), { name: slide.name } );
}

见文档。附加文档(https://archiverjs.com/docs/module-plugins_zip-Zip.html#append)

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新