我需要在nuxtjs上使用JSZip为多个文件制作一个zip文件

时间:2019-09-13 13:21:07

标签: vue.js download nuxt.js nuxt jszip

我想在nuxtjs上使用JSZip为多个文件创建zip文件,我希望将文件转换为base64格式转换为pdf,并且文件格式也可以。如果所有文件均为jpg,则它将转换为jpeg,如果所有文件是pdf,然后将pdf列表转换为zip文件夹。

我想用JSZip包来做这个vuejs或nuxtjs。

我使用下面的代码,但什么也没得到。

    download_btn() {
var zip = new JSZip()
var img = zip.folder("images")
for (i = 0; i < this.image.length; i++) {
img.file("img.png", this.image[i].imageurl)
}
zip.generateAsync({
type: "blob"
}).then(function(content) {
saveAs(content, "img_archive.zip")
})
}

2 个答案:

答案 0 :(得分:0)

我不了解JSZip,但是对于Nuxtjs,您可以创建一个插件来调用它。

应该是像这样的东西:

  1. 通过npm安装JSZip:

npm install jszip

  1. 创建一个文件plugins / jszip.js。在plugins / jszip.js内部添加:

/* ~/plugins/jszip.js */

import Vue from 'vue'
import JSZip from 'jszip'

Vue.use(JSZip)

  1. 在nuxt.config.js上添加对插件的引用。我猜想它应该在访问者的浏览器上运行,所以您应该包括“ mode:client”。这将使其绕过服务器端渲染。

export default {
 ...
  plugins: [
      { src: '~/plugins/jszip', mode: 'client' }
    ]
 ...
  }

  1. 您可以这样尝试代码:

download_btn() {
  var img = JSZip.folder("images")
  for (i = 0; i < this.image.length; i++) {
    img.file("img.png", this.image[i].imageurl)
  }
  JSZip.generateAsync({
    type: "blob"
  }).then(function(content) {
    saveAs(content, "img_archive.zip")
  })
}

您可以在此处了解更多信息:NuxtJS / Plugins

希望它会有所帮助:)

答案 1 :(得分:0)

手动下载jszip,并将其下载到nuxt中的静态文件夹中。
在脚本部分下的nuxt-config中,添加{ src: '/js/jszip.js' },