Node.js:如何将文件附加到 url 中的 (archiverjs) zip
Node.js: How to append files to a (archiverjs) zip from url
我有一个包含一组幻灯片的对象。每张幻灯片 可以 有一个媒体参数,其中包含 url 到图像或视频文件或 link 到 youtube 或 vimeo 视频。
我的目标是将幻灯片查看器压缩,并且在 zip 中我还必须有从 urls 中获取的图像或视频文件。
我目前正在使用 Archiver 创建 zip,它工作正常,但我不知道如何将媒体文件放入 zip(可能)而不先将它们写入文件系统。我想我必须使用流,因为 archiver.append() 可以将流作为第一个参数,但我不知道该怎么做。
我已经实现了一些代码来了解 url 是否指向文件,将文件的 url 写入数组(避免 youtube 或 viemo urls) .
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()
里面的响应拉链。
有没有人可以帮助我?
不要犹豫,问我更多信息:)
提前致谢。
您应该使用 request
方法从远程 URL 创建一个流,作为第一个参数传递给归档器的 append
函数,如下所示:
for ( var slide in slides ) {
archive.append( request( slide.url ), { name: slide.name } );
}
查看 archiver.append 文档 ( https://archiverjs.com/docs/module-plugins_zip-Zip.html#append )
希望对您有所帮助。
我有一个包含一组幻灯片的对象。每张幻灯片 可以 有一个媒体参数,其中包含 url 到图像或视频文件或 link 到 youtube 或 vimeo 视频。
我的目标是将幻灯片查看器压缩,并且在 zip 中我还必须有从 urls 中获取的图像或视频文件。
我目前正在使用 Archiver 创建 zip,它工作正常,但我不知道如何将媒体文件放入 zip(可能)而不先将它们写入文件系统。我想我必须使用流,因为 archiver.append() 可以将流作为第一个参数,但我不知道该怎么做。
我已经实现了一些代码来了解 url 是否指向文件,将文件的 url 写入数组(避免 youtube 或 viemo urls) .
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()
里面的响应拉链。
有没有人可以帮助我? 不要犹豫,问我更多信息:)
提前致谢。
您应该使用 request
方法从远程 URL 创建一个流,作为第一个参数传递给归档器的 append
函数,如下所示:
for ( var slide in slides ) {
archive.append( request( slide.url ), { name: slide.name } );
}
查看 archiver.append 文档 ( https://archiverjs.com/docs/module-plugins_zip-Zip.html#append )
希望对您有所帮助。