SharePoint Client Object Model (COM) Datei-versions-Informationen

Ich werde versuchen, einige grundlegende Informationen zur Dateiversion mit dem neuen SharePoint Client Object Model (COM) mit SharePoint 2010. Ich habe erfolgreich geladen und abgefragt, für meine ListItem -, Datei-und FileVersionCollection wie diese:

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();

An dieser Stelle, ich kann Durchlaufen und die listItem.File.Versions Sammlung und Holen Sie sich die VersionLabel und Url. Allerdings brauche ich, um die Anzahl der bytes, die version und den FileVersion Objekt fehlt ein Size oder Length Eigenschaft.

Habe ich beschlossen, ich könnte einfach Lesen, die version vom server und wegwerfen der bytes (nicht effizient ist, weiß ich, aber es sollte Arbeit) etwa so:

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
}

Aber jedes mal, wenn ich ausführen File.OpenBinaryDirect bekomme ich diesen Fehler:

Das angegebene argument lag außerhalb des Bereichs Gültiger Werte. 
Parameter name: serverRelativeUrl 

Wenn ich den Wert von version.Url und steckte es in meinen browser ein, öffnet die Datei.

Irgendwelche Vorschläge auf, wie man die Größe der Datei? Ich würde lieber nicht öffnen Sie eine HTTP-stream und die Datei Lesen, aber wenn es dazu kommt, dann werde ich.

BTW, ich habe versucht, erstellen Sie eine neue tag-sharepoint-com, aber ich habe nicht genug Ruf. Wenn jemand genug Punkte denkt, der tag lohnt sich, bitte erstellen Sie es 🙂

InformationsquelleAutor michaelkoss | 2010-08-31

Schreibe einen Kommentar