C# 如何检索列表项';s附件,或者至少是通过Silverlight客户端对象模型从SharePoint指向附件的路径?

C# 如何检索列表项';s附件,或者至少是通过Silverlight客户端对象模型从SharePoint指向附件的路径?,c#,silverlight-4.0,sharepoint-2010,C#,Silverlight 4.0,Sharepoint 2010,我有一个SharePoint网站,我正在使用Silverlight客户端对象模型为其安装Silverlight前端。我需要为其提取数据的列表之一包含附件。我需要找到一种方法列出这些附件,但我似乎找不到这样做的方法 ListItem上有一个“Attachments”字段,但它只是一个布尔值,说明附件是否存在 我在SPListItem中看到了很多这样的例子,但是我如何使用Silverlight客户端对象模型来实现这一点呢?我也遇到了这个问题,在ScottyG30和answer on的帮助下,我编写了

我有一个SharePoint网站,我正在使用Silverlight客户端对象模型为其安装Silverlight前端。我需要为其提取数据的列表之一包含附件。我需要找到一种方法列出这些附件,但我似乎找不到这样做的方法

ListItem上有一个“Attachments”字段,但它只是一个布尔值,说明附件是否存在


我在SPListItem中看到了很多这样的例子,但是我如何使用Silverlight客户端对象模型来实现这一点呢?

我也遇到了这个问题,在ScottyG30和answer on的帮助下,我编写了一个从ListItem检索附件的函数:

ClientContext spContext = ClientContext.Current;
File.OpenBinaryDirect(spContext, spContext.Web.ServerRelativeUrl + "/lists/[ListName]/Attachments/[ItemID]/[File Name]", (w, f) =>
        {
            var foo = f.Stream;

        }, (q, w) => { 
            handler(this, new Exception(w.Message)); 
        });
// this method needs to be executed in background thread
public String[] GetAttachments(ClientContext ctx, List list, ListItem item)
{
    // these properties can be loaded in advance, outside of this method
    ctx.Load(list, l => l.RootFolder.ServerRelativeUrl);
    ctx.Load(ctx.Site, s=>s.Url);
    ctx.ExecuteQuery();

    // get the item's attachments folder 
    Folder attFolder = ctx.Web.GetFolderByServerRelativeUrl( list.RootFolder.ServerRelativeUrl + "/Attachments/" + item.Id);
    FileCollection files = attFolder.Files;
    // I needed only urls, so I am loading just them
    ctx.Load(files, fs => fs.Include(f => f.ServerRelativeUrl));
    ctx.ExecuteQuery();

    // now you have collection of files
    return (from file in files select ctx.Site.Url + file.ServerRelativeUrl).ToArray();
}

虽然这对我很有效,但在我看来,当您需要大列表中所有项目的附件(URL)(每个项目都是执行查询的
)。

请查看下面的博文,我在返回时遇到了问题。不过,我在一个for循环中做得很好。其他一切都很好。这让我有足够的时间来检索文件。下一步是从远程服务器下载并存储在本地服务器上。