[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