0

SOAP の代わりに REST スタイルの URL を使用して、WCF 3.5 でストリームを返そうとしています。アイデアは、SharePoint 2010 からファイルを読み取り、それをクライアントに戻すことです。(SharePoint サービスを使用する代わりにこのようにする理由がありますが、余談です。) ファイルを送信する唯一の方法は、 を使用してファイル システムに書き込みFileStream、 を使用File.OpenReadしてストリームをクライアント。a を使用してMemoryStreamもうまくいかないようです。IE はファイルの保存を要求しますが、ファイルは 2KB ほどになり、すべてがそこにあるわけではないため、もちろん読み取ることができません。何か案は?

SPListItemCollection lookupFld2 = docLibrary.GetItems(spQuery2);  

if (lookupFld2.Count > 0)
{
    WebOperationContext.Current.OutgoingResponse.ContentType = 
      "application/octet-stream";

    WebOperationContext.Current.OutgoingResponse.Headers.Add(
      "Content-Disposition","attachment; filename=" + lookupFld2[0].File.Name);

    MemoryStream memoryStream = 
      (MemoryStream)lookupFld2[0].File.OpenBinaryStream();

    memoryStream.Position = 0;

    return memoryStream;
}
4

1 に答える 1

0

技術的には、OpenBinaryStreamはMemoryStream(http://msdn.microsoft.com/en-us/library/ms470901.aspx)ではなく一般的なStreamインスタンスのみを返します。MemoryStreamが必要な場合は、新しいものを作成し、その内容をBinaryStreamからMemoryStreamにコピーしてから、位置をリセットして返す必要があります。

于 2012-12-20T18:53:29.753 に答える