0

我正在尝试使用 REST 样式的 URL 而不是 SOAP 在 WCF 3.5 中返回一个流。想法是从 SharePoint 2010 读取文件,然后将其传递回客户端。(我们有理由这样做而不是使用 SharePoint 服务,但我离题了。)似乎发送文件的唯一方法是使用 one 将其写入文件系统FileStream,然后使用File.OpenRead将流返回到客户。使用 aMemoryStream似乎不起作用。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 仅返回一般 Stream 实例而不是 MemoryStream (http://msdn.microsoft.com/en-us/library/ms470901.aspx)。如果你想要一个 MemoryStream,你需要创建一个新的并将 BinaryStream 中的内容复制到 MemoryStream 中,然后重置位置并返回它。

于 2012-12-20T18:53:29.753 回答