

blobデータを受け取った後にJavaScriptで圧縮して、他のアプリケーションサーバーに転送する事を実現しようとしています。その際に、下記のようにnode-
gzipライブラリを使って、blobデータ（fileblobA）を圧縮しようとしました。node-
gzipの入力データ型ではblobが扱えないようでしたので、arrayBufferに変更して、圧縮を試みました。しかし下記のコードではエラーになりました。

**動作環境**  
Node.js + Vue.js

**コード:**

[code]

    ＝＝前略＝＝
    
    const fileblobA = new Blob([result],{type:'application/octet-stream'})
    
    const { gzip, ungzip } = require('node-gzip');
    const gzipA = await gzip(fileblobA.arrayBuffer) ;
    
[/code]

**エラーメッセージ:**

[code]

    Uncaught TypeError TypeError: Failed to execute 'arrayBuffer' on 'Blob': Illegal invocation
    
[/code]

**解決しました**  
【変更点】  
・ライブラリの変更 node-gzip → zlib.js

**内容**  
index.html

[code]

    <script type="text/javascript" src="../lib/zlib/zip.min.js"></script>
    
[/code]

index.js

[code]

    const arrayBuffer = await fileblobA.arrayBuffer();
        const zip = new Zlib.Zip();
        zip.addFile(arrayBuffer)
        const compressData = zip.compress();
        const fileblobZ = new Blob([compressData], { 'type': 'application/zip' });
    
[/code]


CC BY-SA 4.0
2022-11-10T03:03:54.787
92119
2022-11-19T09:30:46.447
2022-11-17T02:24:16.840
55269
55269
question
javascript node.js gzip
blobデータをJavaScript で圧縮する方法


以下の記述で、圧縮までは確認できました。

内容  
index.html

[code]

    <script type="text/javascript" src="../lib/zlib/zip.min.js"></script>
    
[/code]

index.js

[code]

    const arrayBuffer = await fileblobA.arrayBuffer();
        const zip = new Zlib.Zip();
        zip.addFile(arrayBuffer)
        const compressData = zip.compress();
    
[/code]


CC BY-SA 4.0
2022-11-19T09:30:46.447
92313
2022-11-19T09:30:46.447
55269
92119
answer