LoginSignup
0
0
この記事誰得? 私しか得しないニッチな技術で記事投稿!

pako.jsで圧縮したgzipバイナリをpythonで展開する

Last updated at Posted at 2023-07-05

前回、こんな記事を書きました。

今度はその逆を実装する必要が出てきたのですが、これはこれでハマったので備忘録

まずは前回使ったzlibのライブラリpakoを使って圧縮する

pako.js

フロント側

export const handleGzipData = (
  targetData: object | object[],
  isErrorAlert = true
): number[] | '' => {
  try {
  // まずは文字列に変換
    const targetDataOfString = JSON.stringify(targetData)

    // python側ではバイナリ配列で渡す
    const gzipedUnit8Array = pako.gzip(targetDataOfString)

    return [...gzipedUnit8Array]
  } catch (error) {
    if (isErrorAlert && error instanceof Error) {
      errorHandring(error, `エラーコード:XXXX`)
    }

    return ''
  }
}

はじめはgzip圧縮されたgzip文字列をbase64encodeしてバックエンドにリクエストしていたのですが、Python側でうまくdecodeできないため、
以下の記事をみてバイナリ文字列なら展開できる旨が記載されていたので試してみることに!!

そしたら案の定うまくいきましたとさ。

バックエンド側

import gzip

data = bytearray(data)
data = gzip.decompress(data)
data = data.decode()
data = json.loads(data)

一言

いやー多言語間の圧縮/解凍はハマりますね〜

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0