将 zip 文件上传到服务以供用户下载
Upload zip files to service for user download
我有一个 express (node.js) 应用程序,它可以为用户创建 mp3 文件并将它们存储在服务器上的一个文件夹中。
服务器的文件结构如下所示:
data/
id#/
song1.mp3
song2.mp3
song3.mp3
id#/
song1.mp3
song2.mp3
song3.mp3
...
我想为文件夹创建 zip 文件和下载链接,并通过电子邮件向用户发送他们的 zip 文件。每个文件夹都使用 id# 命名并对应于一个用户。
我想使用外部服务(例如s3)来存储和处理文件的下载。
我如何压缩文件并将它们发送到服务并创建下载链接?我应该查看哪些服务?
你可以使用 child_process
模块在后台 运行 一个 zip 命令(这个例子是说如果你在 Linux,你可以修改它以适应windows)
这只是处理压缩过程,然后您可以使用 link 响应以下载文件:
var exec = require('child_process').exec;
var currentWorkingDirectory = '/data', // Folder that contains the sub folders of id#/
folderToZip = 'id123123', // Subfolder name id#, e.g. id123123
tmpFolderForZips = '/tmp/', // Folder to store the zip files in
execString = "zip -r " + tmpFolderForZips + folderToZip + ".zip " + folderToZip; // Tidy string to put it all together
console.log(execString);
var child = exec(execString, { cwd: currentWorkingDirectory });
child.on('error', function(err) {
console.log(err);
})
child.on('close', function() {
// respond with download link to zip file
console.log('Done Zipping');
});
确保你apt-get install zip
我有一个 express (node.js) 应用程序,它可以为用户创建 mp3 文件并将它们存储在服务器上的一个文件夹中。
服务器的文件结构如下所示:
data/
id#/
song1.mp3
song2.mp3
song3.mp3
id#/
song1.mp3
song2.mp3
song3.mp3
...
我想为文件夹创建 zip 文件和下载链接,并通过电子邮件向用户发送他们的 zip 文件。每个文件夹都使用 id# 命名并对应于一个用户。
我想使用外部服务(例如s3)来存储和处理文件的下载。
我如何压缩文件并将它们发送到服务并创建下载链接?我应该查看哪些服务?
你可以使用 child_process
模块在后台 运行 一个 zip 命令(这个例子是说如果你在 Linux,你可以修改它以适应windows)
这只是处理压缩过程,然后您可以使用 link 响应以下载文件:
var exec = require('child_process').exec;
var currentWorkingDirectory = '/data', // Folder that contains the sub folders of id#/
folderToZip = 'id123123', // Subfolder name id#, e.g. id123123
tmpFolderForZips = '/tmp/', // Folder to store the zip files in
execString = "zip -r " + tmpFolderForZips + folderToZip + ".zip " + folderToZip; // Tidy string to put it all together
console.log(execString);
var child = exec(execString, { cwd: currentWorkingDirectory });
child.on('error', function(err) {
console.log(err);
})
child.on('close', function() {
// respond with download link to zip file
console.log('Done Zipping');
});
确保你apt-get install zip