[C#.NET][Sharepoint 2013] 如何使用 CSOM 操作文件 CheckOut/CheckIn/Publish 狀態
開始前要先設定文件庫的版本設定
本文章節
版本號定義:
Publish:
Publish Scenario:
Check Out:
Check In:
Check Out& Check In Scenario:
開始之前要先瞭解一下版本號的定義
如下圖,『0.1』
0 代表,主要版號(Major)
1 代表,草稿版號(Minor)
對應到 Sharepoint 裡的 UI 操作,如下圖:
發佈後,版號就跳正式板,如下圖:
程式碼其實就很簡單,上傳文件後立馬發佈 uploadFile.Publish("正式版1.0");
{ using (ClientContext client = new ClientContext("http://sps2013/CsomApi")) { client.Credentials = new NetworkCredential(YourAccount, YourPassWord); var list = client.Web.Lists.GetByTitle("Documents"); FileCreationInformation newfile = new FileCreationInformation() { Content = System.IO.File.ReadAllBytes("demo.docx"), Url = "demo.docx", Overwrite = true, }; var uploadFile = list.RootFolder.Files.Add(newfile); uploadFile.Publish("正式版1.0"); client.Load(uploadFile); client.ExecuteQuery(); } }
當我不斷的上傳一份文件,它會累加跳草稿版號(Minor),如 0.1 , 0.2 , 0.3…
直到調用 Microsoft.SharePoint.Client.FIle.Publish()後,才會跳主要版號(Major),草稿版號歸 0,如下圖所示:
- 其他人不能對該份文件操作
- 產生一個草稿號,比如 1.1
- 可以不斷的編輯文件或上傳文件,這時草稿版號不會累加
在Sharepoint 裡的 UI 操作只是很簡單的按下CheckOut,如下圖
簽出後就會看到有一個綠色小箭頭,也可以看到是誰簽出這份文件的
程式碼邏輯很簡單,找出該份文件,然後簽出
{ using (ClientContext client = new ClientContext("http://sps2013/CsomApi")) { client.Credentials = new NetworkCredential(YourAccount, YourPassWord); var list = client.Web.Lists.GetByTitle("Documents"); var findFile = list.RootFolder.Files.GetByUrl("demo.docx"); findFile.CheckOut(); client.Load(findFile); client.ExecuteQuery(); } }
Checkout 後,有三條路可以選,否則其他人無法編輯該份文件
- MajorCheckIn:簽入主要版本
- MinorCheckIn:簽入草稿
- UnCheckout:放棄草稿,回到最新版
在 Sharepoint UI 裡,即可看到選單,如下圖:
CheckIn有兩條路,一條是進草稿版本,一條是進主要版本,如下圖:
程式碼如下:
就是由 CheckinType 列舉型別 決定要簽入主要、草稿版本
{ using (ClientContext client = new ClientContext("http://sps2013/CsomApi")) { client.Credentials = new NetworkCredential(YourAccount, YourPassWord); var list = client.Web.Lists.GetByTitle("Documents"); var findFile = list.RootFolder.Files.GetByUrl("demo.docx"); findFile.CheckIn("正式版2.0", CheckinType.MajorCheckIn); client.Load(findFile); client.ExecuteQuery(); } }
若調用 findFile.UndoCheckOut(); 就會放棄草稿,回到最新的主要版本
我不想讓其他同事編輯這份文件,所以我簽出它(CheckOut File),在這段時間裡我不斷的更新檔案內容(Upload File),因為 Checkout 的關係草稿版號不會跳了
文件還在修改期間,忽然接穫出差一星期的命令,同事 A 必須接手我的工作,於是我調用 MinorCheckIn,讓同事 A 可以繼續編輯文件,當然這時換同事 A 簽出
當同事 A 滿意這份文件時則調用 MajorCheckIn,讓它進版
本文出自:http://www.dotblogs.com.tw/yc421206/archive/2014/06/05/145389.aspx
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET