ブラウザにクライアント側のファイルの復号化を実装したい。復号化されたファイルをサーバーから取得し、ブラウザで復号化し、[名前を付けて保存]ダイアログを表示して、復号化されたファイルを保存します。大きなファイル(1 GB以上)でも機能するはずです。
私は次の戦略を念頭に置いています。
XMLHttpRequest
と
responseType = 'blob'
を使用してファイルをダウンロードします。
XMLHttpRequest
で指定されたBlobを変換して復号化します。
復号化されたBlobを
objectURL
としてユーザーに提供します。
復号化はストリーム変換のように機能し、ダウンロードされたBlobからチャンクを読み取り、データを復号化して出力Blobに書き込みます。
ただし、私の知る限り、これは、ファイル全体をメモリにロードできる場合にのみ、現在のブラウザで機能します(
objectURL
を作成する前に、完全な復号化されたblobをメモリに格納する必要があります)。
Mozilla Developer Networkで説明されているように、現在の
Blob
、
XMLHttpRequest
、および
createObjectURL
インターフェースでは、チャンクされた読み取り/書き込みがサポートされていないようです。
Blobは不変であり、ブラウザでのバイナリデータのストリーミングサポートはないようです。
現在のブラウザでこれを実装する方法はありますか?