4

現在、エクスポートプラグインを使用してサーバー上でオンザフライでExcelファイルを作成し、response.outputstreamを介してブラウザに送信しています(エクスポートプラグインによって行われます)。代わりに、Excelファイルを作成し、完了したら、ユーザーにメールで送信します。メールを受け取ったと仮定して、誰かサンプル コードを見せてもらえますか?

エクスポート プラグイン コードを調べたところ、応答出力ストリームに書き込まれているようです。どうにかしてこの出力ストリームから読み取り、ファイルを作成し、ディスクに保存せず、代わりに電子メールで送信できますか?

4

2 に答える 2

4

エクスポート プラグインは、サーバーにもファイルを作成できます。

File exportOutput = new File("/home/mkb/test.csv")
def exportOutputStream = new FileOutputStream(exportOutput)
exportService.export('csv', exportOutputStream, User.list(), fields, labels, formatters, parameters)

ファイルを取得したら、grailsメール プラグインを添付ファイルとして使用して、簡単にメールで送信できます。

于 2013-10-03T19:01:49.813 に答える
2

attach(String fileName, String contentType, InputStreamSource source)このメソッドをGrails Mail DSLで使用したいと考えています。これにより、ファイルをディスクに書き込むことなく、メモリ内ですべてを実行できます。

import org.springframework.core.io.ByteArrayResource
...

OutputStream outputStream = new ByteArrayOutputStream()
exportService.export(type, outputStream, objects, fields, labels, formatters, parameters)
InputStreamSource inputStream = new ByteArrayResource(outputStream.bytes)  //copy output stream to input stream

sendMail {
   mutipart true
   to "someone@org.com"
   attach "yourfile.txt", "text/plain", inputStream
}

詳細はこちら

それが役立つことを願っています!

于 2013-10-04T17:00:33.630 に答える