public string Add(string fileName, byte[] fileBytes, TEntityType entity, LibraryAddOptions options = LibraryAddOptions.None) { var folder = List.RootFolder; List.Context.Load(folder, f => f.ServerRelativeUrl); List.Context.ExecuteQuery(); var context = List.Context as ClientContext; if (context == null) { throw new NotImplementedException("Bin mir noch nicht sicher, wie ich das mache..."); } var fileUrl = folder.ServerRelativeUrl + (folder.ServerRelativeUrl.EndsWith("/") || fileName.StartsWith("/") ? string.Empty : "/") + fileName; using (var stream = new System.IO.MemoryStream(fileBytes)) { File.SaveBinaryDirect(context, fileUrl, stream, overwriteIfExists: true); } var file = List.ParentWeb.GetFileByServerRelativeUrl(fileUrl); List.Context.Load(file, f => f.ListItemAllFields, f => f.CheckOutType); List.Context.ExecuteQuery(); var keepCheckedOut = (options & LibraryAddOptions.KeepCheckedOut) == LibraryAddOptions.KeepCheckedOut; if (entity != null) { mapper.MapEntityToItem(entity, file.ListItemAllFields); file.ListItemAllFields.Update(); if (file.CheckOutType != CheckOutType.None && !keepCheckedOut) { file.CheckIn("Checked in by application", CheckinType.OverwriteCheckIn); } } var doNotExecuteQuery = (options & LibraryAddOptions.DoNotExecuteQuery) == LibraryAddOptions.DoNotExecuteQuery; if (!doNotExecuteQuery) { List.Context.ExecuteQuery(); } return(fileUrl); }
public string Add(string fileName, byte[] fileBytes, LibraryAddOptions options = LibraryAddOptions.None) { return(Add(fileName, fileBytes, null, options)); }