[C#.NET][Sharepoint 2013] Use REST API(ListData.svc) Upload file
ListData.svc 是用 WCF 實作的 RESTful /OData API, 顧名思義就是用來處理清單(文件庫也是清單),它所提供的功能不多,但如果你只是要處理清單內容,這個服務就夠用了;官方已經建議已用新版 API,新版的 API 就在上篇已經介紹過了http://www.dotblogs.com.tw/yc421206/archive/2014/06/12/145512.aspx,功能也比較多
本文章節
http://<sps server>/_vti_bin/listdata.svc
在VS的專案直接加入參考,如下圖:
用 LINQPad直接將資料撈出來,如下圖所示
WCF Data Service 已經實作 OData 服務,透過 LINQPad 輕鬆進行語法轉換,如下圖所示
http://sps2013/_vti_bin/listdata.svc/MyDocuments()?$top=100
程式處理基本上沒有什麼問題,看範例很容易理解
加入 ListData.svc 參考後,會幫我們產生相對應的主類別以及其他類別,我的主類別叫 TopSiteDataContext 這是根據網站Title所產生,別傻傻的照抄,我的清單裡有一個 MyDocuments,每一個 Row 代表的是 MyDocumentsItem ,清單 MyList 也是一樣有MyListItem,如下圖:
{ var fileName = "簡歷.docx"; var contentType = "Document"; var path = "/myDocuments/" + fileName; var stream = File.Open(fileName, FileMode.Open); try { var dbContext = new TopSiteDataContext(new Uri("http://sps2013/_vti_bin/listdata.svc")); dbContext.Credentials = new NetworkCredential(YourId, YourPassword, YourDomain); MyDocumentsItem item = new MyDocumentsItem(); item.Title = fileName; item.ContentType = contentType; item.Path = path; item.Name = fileName; dbContext.AddToMyDocuments(item); dbContext.SetSaveStream(item, stream, false, contentType, path); dbContext.SaveChanges(); } catch (Exception ex) { //todo:process exceptioin } finally { stream.Dispose(); } }
{ var dbContext = new TopSiteDataContext(new Uri("http://sps2013/_vti_bin/listdata.svc")); dbContext.Credentials = new NetworkCredential(YourId, YourPassword, YourDomain); var find = dbContext.MyDocuments.Where(o => o.Name == "簡歷.docx").FirstOrDefault(); if (find == null) { MessageBox.Show("No Found"); } find.Name = "123.docx"; dbContext.UpdateObject(find); dbContext.SaveChanges(); }
{ var dbContext = new TopSiteDataContext(new Uri("http://sps2013/_vti_bin/listdata.svc")); dbContext.Credentials = new NetworkCredential(YourId, YourPassword, YourDomain); var find = dbContext.MyDocuments.Where(o => o.Name == "123.docx").FirstOrDefault(); if (find == null) { MessageBox.Show("No Found"); } dbContext.DeleteObject(find); dbContext.SaveChanges(); }
{ var dbContext = new TopSiteDataContext(new Uri("http://sps2013/_vti_bin/listdata.svc")); dbContext.Credentials = new NetworkCredential(YourId, YourPassword, YourDomain); MyListItem item = new MyListItem(); item.Title = "item1"; dbContext.AddToMyList(item); dbContext.UpdateObject(item); dbContext.SaveChanges(); }
執行結果,如下圖:
文章出自:http://www.dotblogs.com.tw/yc421206/archive/2014/06/20/145637.aspx
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET