私は要望に応じてfly on excelファイルを作成し、clojure.ringを使用してユーザーに応答する必要があります。ring.utils.ioのpiped-input-streamを使用してファイルを提供する
私は(この機能参照:https://github.com/mjul/docjure/blob/master/src/dk/ative/docjure/spreadsheet.clj#L86)をExcelファイルを作成し、出力ストリーム にそれを書くためにdocjureを使用して、私は(https://github.com/ring-clojure/ring/blob/1.5.0/ring-core/src/ring/util/io.clj#L11を参照)を使用してからの出力ストリームを取得します。
コードの関連部分:
(defn excel-response
[params]
(-> (response (piped-input-stream (fn [out-stream]
(create-excel-into-stream out-stream
params))))
(assoc :headers {"Content-Type"
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})))
この機能を使用するには、私は常にいくつかの理由のために空の.xlsxファイルを取得します。 が閉じる前に、私は自分の応答の本体として提供することができます。
出力ストリームに書き込み、入力ストリームに渡して応答の本体として機能するように、正しく使用するにはどうすればよいですか?
見るべき3つのアイデア: 'create-excel-into-stream'はコンテンツを作成しますか?ストリームは互いに接続されていますか?両方のストリームは異なるスレッドにありますか? –
1.コンテンツを作成します。 2.それらは 'piped-input-stream'関数の中で' .connect'で接続されています。私の質問のコードへのリンクを見てください。 3.スレッドは作成されず、 'piped-input-stream'関数は' future'を使用して出力ストリームを処理します。私は実際には現在のコードをあまり追加せず、 'piped-input-stream'をそのまま使用しました。何か不足していますか? –