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
Du musst angemeldet sein, um einen Kommentar abzugeben.
SPFile.Length
Wird die Größe der Datei in bytes, ohne die Größe des Webparts, die verwendet werden in der Datei.InformationsquelleAutor MikeJ
Anscheinend können Sie nicht auf Inhalte zugreifen, die von früheren Versionen von Datei.OpenBinaryDirect. Sie können WebClient herunterladen, um es über HTTP/S direkt statt.
Sehen dieser forum thread darüber.
InformationsquelleAutor Ferdinand Prantl