1

私はabcPDFを使用して動的にPDFを作成しています。

クライアントがいつでも取得できるように、これらのPDFを保存したいと思います。最も簡単な方法(および現在のサーバーで行う方法)は、完成したPDFをファイルシステムに保存することです。

私はblobの使用に固執しているようです。幸い、abcPDFはファイルだけでなくストリームにも保存できます。では、ストリームをBLOBに接続するにはどうすればよいですか?次のようなストリームを取得しているblobを示すコードを見つけました。

blob.UploadFromStream(theStream, options);

abcPDF関数は次のようになります。

theDoc.Save(theStream)

このギャップを埋める方法がわかりません。

ありがとう!ブラッド

4

2 に答える 2

4

ファイル全体をメモリに保持する必要のない別の方法として、次の方法を試してみてください。

using (var stream = blob.OpenWrite())
{
    theDoc.Save(stream);
}

編集

ここで注意点を追加します。saveメソッドがシーク可能なストリームを必要とする場合、これは機能しないと思います。

于 2012-08-31T06:41:46.240 に答える
1

状況を考えると、abcPdf の Save() メソッドのオーバーロードの完全なリストがわからないため、MemoryStream が必要なようです。何かのようなもの:

using(MemoryStream ms = new MemoryStream())
{
    theDoc.Save(ms);
    ms.Seek(0, SeekOrigin.Begin);
    blob.UploadFromStream(ms, options);
}

これは仕事をするものとします。しかし、大きなファイルを扱っていて、大量のトラフィック (多数の PDF の同時作成) が予想される場合は、一時ファイルを使用することをお勧めします。PDF を一時ファイルに書き込み、すぐに blob の一時ファイルをアップロードします。

于 2012-08-30T19:22:50.423 に答える