0

Meteor を使用して zip ファイルを作成して提供しようとしています。ここに私が持っているものがあります:

Router.map ->
  @route "data",
    where: 'server'
    path: "/data"
    action: ->
      this.response.writeHead 200,
        'Content-Type': 'application/zip'
        'Content-Disposition': "attachment; filename=data.zip"
      zip = new JSZip()
      zip.file "Hello.txt", "Hello World"
      this.response.end zip.generate({ 'type': 'string', 'compression': 'DEFLATE'})

jszip.min.js と jszip-deflate.js があります。zipファイルが作成され、ダウンロードできるのですが、アーカイブマネージャでファイルを開くことができません(破損しています)。テキスト エディタで data.zip を開くと、「PK」と 2 つの 16 進文字が表示されます。

zip ファイルを作成して返すにはどうすればよいですか?

答え:

圧縮にデフォルトの base64 エンコーディングを使用し、end/write メソッドで応答エンコーディングを指定します。

Router.map ->
  @route "data",
    where: 'server'
    path: "/data"
    action: ->
      this.response.writeHead 200,
        'Content-Type': 'application/zip'
        'Content-Disposition': "attachment; filename=data.zip"

      zip = new JSZip()
      zip.file "Hello.txt", "Hello World"
      file = zip.generate({ 'compression': 'DEFLATE' })

      this.response.end file, 'base64'
4

1 に答える 1