如何在Node js中下载捆绑为一个zip文件的多个文件?

时间:2019-12-02 05:09:31

标签: javascript node.js

我正在处理节点项目,在我的项目中,图像文件夹中有两个图像。现在我的目标是要压缩这两个图像并下载。为此,我正在使用此npm zip-downloader

但是我遇到了这类错误

错误:找不到模块“ babel-runtime / core-js / object / assign”

这是我的代码server.js

const express = require('express');
const app = express();
const cors = require('cors');
const bodyParser = require('body-parser');
const multer = require('multer');
const upload = multer({dist:'./uploads'});
const jimp = require('jimp');
const zip = require('file-zip');
const downloader = require('zip-downloader')





app.post('/api/images',upload.single('profilepic'), (req, res) =>{
    console.log(req.file)
    res.json({'message':'file upload successfully'})
});


jimp.read('images/one.jpeg')
  .then(one => {
    return morng
      .resize(100, 100) // resize
      .quality(60) // set JPEG quality
      .greyscale() // set greyscale
      .write('images/two.jpg'); // save
  })
  .catch(err => {
    console.error(err);
  });


zip.zipFile(['images/one.jpeg','images/two.jpg'],'out.zip',function(err){
    if(err){
        console.log('zip error',err)
    }else{
        console.log('zip success');
    }
})

const assets = [
  {
      'src': 'images/one.jpeg'
  },
  {
    'src': 'images/two.jpg'
  }
];

const options = {
  downloadFolderName: 'images',
  statusCallback: function(downloadedTillNow){
      console.log('Download status:' + ((downloadedTillNow * 100)/assets.length));
  },
  onComplete : function(downloadedSummary){
      console.log('Assets downloaded:' + downloadedSummary.numberOfDownloadedAssets);
      console.log('Assets failed:' + downloadedSummary.numberOfFailedAssets);
      console.log('Large Assets downloaded(over maxZIPSize):' + downloadedSummary.numberOfLargeUnZippedAssets);
      console.log('Number of zip files downloaded:' + downloadedSummary.numberOfDownloadedZIPFiles);
      console.log('Array of failed assets:');
      console.log(downloadedSummary.failedAssetList);
  },
};

downloader(assets, options);

这是package.json文件

{
  "name": "file",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node server.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "file-zip": "^1.0.1",
    "files-download-zip": "^3.1.1",
    "jimp": "^0.9.3",
    "jszip": "^3.2.2",
    "multer": "^1.4.2",
    "zip-downloader": "^1.0.2"
  }
}

需要一种解决方案来克服此错误。

1 个答案:

答案 0 :(得分:0)

由于您正在定义对象const options = {},因此在括号{}中定义的所有属性都应紧跟:

在这种情况下的错误:

  

SyntaxError:无效的速记属性初始化程序

表示您正在尝试使用无效的语法创建属性。

您可以通过以下方式修复它:

const options = {
  downloadFolderName: 'images',
  statusCallback: function(downloadedTillNow){
      console.log('Download status:' + ((downloadedTillNow * 100)/assets.length));
  },
  onComplete: function(downloadedSummary){
      console.log('Assets downloaded:' + downloadedSummary.numberOfDownloadedAssets);
      console.log('Assets failed:' + downloadedSummary.numberOfFailedAssets);
      console.log('Large Assets downloaded(over maxZIPSize):' + downloadedSummary.numberOfLargeUnZippedAssets);
      console.log('Number of zip files downloaded:' + downloadedSummary.numberOfDownloadedZIPFiles);
      console.log('Array of failed assets:');
      console.log(downloadedSummary.failedAssetList);
  }
};