ファイルを小さなチャンクでアップロードする WSSv3 アプリケーションを作成しました。すべてのデータが到着したら、パフォーマンス上の理由から一時的に SQL 2005 のイメージ データ型フィールドに保持します**。
アップロードが終了すると問題が発生します。WSSv3 オブジェクト モデルを使用して、SQL Server から SharePoint ドキュメント ライブラリにデータを移動する必要があります。
現在、次の 2 つのアプローチが考えられます。
SPFileCollection.Add(string, (byte[])reader[0]); // OutOfMemoryException
と
SPFile file = folder.Files.Add("filename", new byte[]{ });
using(Stream stream = file.OpenBinaryStream())
{
// ... init vars and stuff ...
while ((bytes = reader.GetBytes(0, offset, buffer, 0, BUFFER_SIZE)) > 0)
{
stream.Write(buffer, 0, (int)bytes); // Timeout issues
}
file.SaveBinary(stream);
}
このタスクを正常に完了する他の方法はありますか?
** パフォーマンス上の理由: すべてのチャンクを SharePoint に直接書き込もうとすると、ファイルが大きくなる (>100Mb) につれてパフォーマンスが低下することに気付くでしょう。