ファイルのアップロードを許可するYesodアプリケーションがあります (ただし、質問はこれよりも一般的です)。ファイルのダウンロードも許可します。ユーザーが単一のリンクで複数のファイルをダウンロードできるようにしたいと思います。この質問に従って: 1 つの HTTP 要求で複数のファイルをダウンロードする方法は? 唯一の解決策は、すべてのファイルを含むファイルアーカイブを作成することです。
ディスクに書き込んだり、外部プログラムを実行したりせずに、Hackage のライブラリを使用して、Haskell の一定のメモリで実行したいと考えています。
特に、以下は非解決策です。
外部プログラムを呼び出してアーカイブを作成します。ファイルはディスク上にあるか、リモートURLからアクセスできるデータベースにあります。ファイルシステムは「読み取り専用」である可能性があります。セキュリティ上の理由から、外部プログラムを実行できない場合があります。外部プログラムは展開を複雑にします。
ソースファイルからディスク上に一時アーカイブを作成: 上記の「読み取り専用」ファイルシステムを参照してください。また、非常に非効率的です。ディスクへの書き込みは実際にはかなり遅いです。
メモリ内に完全なアーカイブを作成し、後でそれを提供します。ファイルは非常に大きく (CD イメージを考えてください)、複数になる場合があります。必要なメモリが多すぎます。