Mam listę programu SharePoint, do której dodaję nowe elementy ListItem za pomocą modelu obiektu klienta. Dodawanie ListItems nie stanowi problemu i działa świetnie.SharePoint 2010 - Model obiektu klienta - Dodaj załącznik do ListItem
Teraz chcę dodać załączniki.
Używam SaveBinaryDirect w następujący sposób:
File.SaveBinaryDirect(clientCtx, url.AbsolutePath + "/Attachments/31/" + fileName, inputStream, true);
Działa bez problemu tak długo jak element, który próbuję dodać załącznik do, ma już załącznik, który został dodany za pośrednictwem witryny programu SharePoint, a nie za pomocą modelu obiektu klienta.
Gdy próbuję dodać załącznik do elementu, który nie robi żadnych załączników jeszcze, otrzymuję następujące błędy (zarówno zdarzyć, ale nie z tych samych plików - ale te dwa komunikaty pojawiają się konsekwentnie):
The remote server returned an error: (409) Conflict
The remote server returned an error: (404) Not Found
Pomyślałem, że być może najpierw muszę utworzyć folder załącznika dla tego elementu. Kiedy próbuję następujący kod:
clientCtx.Load(ticketList.RootFolder.Folders);
clientCtx.ExecuteQuery();
clientCtx.Load(ticketList.RootFolder.Folders[1]); // 1 -> Attachment folder
clientCtx.Load(ticketList.RootFolder.Folders[1].Folders);
clientCtx.ExecuteQuery();
Folder folder = ticketList.RootFolder.Folders[1].Folders.Add("33");
clientCtx.ExecuteQuery();
otrzymuję komunikat o błędzie:
Cannot create folder "Lists/Ticket System/Attachment/33"
mam pełne prawa administratora dla witryny SharePoint/listy.
Jakieś pomysły, co mógłbym zrobić źle?
Dzięki, Thorben
Dzięki za odpowiedź, MaxBeard. Przynajmniej świadomość, że nie jest to możliwe, jest lepsza niż próbowanie i niepowodzenie - wydaje się, że powinno być możliwe. Przy okazji, fajny blog. – Thorben
To rzeczywiście wygląda tak ... zobacz moją odpowiedź na pełną próbkę kodu, jak to zrobić. –