我正在嘗試使用SharePoint 2010的新SharePoint客戶端對象模型(COM)獲取一些基本文件版本信息。我已成功加載並查詢了我的ListItem,File和FileVersionCollection這樣的:SharePoint客戶端對象模型(COM)文件版本信息
using (ClientContext context = new ClientContext(site)) {
context.Load(context.Web);
List docs = context.Web.Lists.GetByTitle("Docs");
context.Load(docs);
//query that returns the ListItems I want
CamlQuery query = new CamlQuery { ViewXml = ".."};
ListItemCollection docItems = docs.GetItems(query);
context.Load(docItems);
context.ExecuteQuery();
//load the FileVersionCollection
foreach (ListItem listItem in docItems) {
context.Load(listItem);
context.Load(listItem.File);
context.Load(listItem.File.Versions);
}
context.ExecuteQuery();
在這一點上,我可以通過listItem.File.Versions
訪問集合,並得到VersionLabel
和Url
。但是,我需要獲取版本的字節數,並且FileVersion
對象缺少Size
或Length
屬性。
我決定,我可以只讀取的版本關閉服務器並丟掉字節(效率不高,我知道,但它應該工作),像這樣:
foreach (FileVersion version in item.File.Versions) {
FileInformation info = File.OpenBinaryDirect(context, version.Url);
long filesize = 0;
Stream stream = info.Stream;
byte[] buffer = new byte[4096];
int read = 0;
while ((read = stream.Read(buffer, 0, 4096)) > 0) {
filesize += read;
}
//use the filesize
}
但每次我執行File.OpenBinaryDirect
時間我得到這個錯誤:如果我走的version.Url
價值,並把它放到我的瀏覽器
Specified argument was out of the range of valid values. Parameter name: serverRelativeUrl
,打開該文件。
有關如何獲取文件大小的任何建議?我不想打開HTTP流並讀取文件,但如果涉及到這一點,那麼我會。
順便說一句,我試着創建一個新的標籤sharepoint-com,但我沒有足夠的聲譽。如果有足夠積分的人認爲標籤是值得的,請創建它:)
不適用於客戶端對象模型... – 2012-02-25 05:08:08