2012-09-20 71 views
0

我正在使用Web服務將文檔上載到Sharepoint的站點上工作。我有一個可以運行並上傳到Sharepoint的Web服務。但是,我需要爲要上傳的文件添加元數據,例如數據庫記錄中的名字,姓氏,出生日期等,以及網站上的實時數據。這些數據就像一個'工作流程號碼','協議號碼','文件類型',它在網站上生成並與該會員和文件相關聯。使用元數據將文檔上傳到SharePoint c#ASP.NET

這裏是代碼:

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Web; 
using Microsoft.SharePoint.Client; 

namespace DCTMAgent 
{ 
    public class SharePoint 
    {    
     internal void SPUploader(Stream fs, string fn) 
     { 
      ClientContext context = new ClientContext("http://SharepointSite/Home.aspx"); 

      System.Net.ICredentials creds = System.Net.CredentialCache.DefaultCredentials; 

      context.Credentials = creds; 
      context.RequestTimeout = 60000000; // Time in milliseconds 

      string url = "/Members/"; 
      string fileName = Path.GetFileName(fn);     

      string fnUrl = url + fn; 
      Microsoft.SharePoint.Client.File.SaveBinaryDirect(context, fnUrl, fs, true);   
     }  
    } 
} 

我怎樣才能改變這個上載的元數據與文檔?

回答

0

這裏是我的解決方案:

public class SharePoint 
     { 
      internal void SPUploader(Stream fs, string fn) 
      { 
       ClientContext context = new ClientContext("http://Sharepointsite");///SitePages/Home.aspx"); 
       System.Net.ICredentials creds = System.Net.CredentialCache.DefaultCredentials; 

       context.Credentials = creds; 
       context.RequestTimeout = 60000000; // Time in milliseconds 

       string url = "/Members/"; 
       string fileName = Path.GetFileName(fn);     

       string fnUrl = url + fn; 

       Microsoft.SharePoint.Client.File.SaveBinaryDirect(context, fnUrl, fs, true); 

       string uniqueRefNo = GetNextDocRefNo(); 

       SP.Web web = context.Web; 

       Microsoft.SharePoint.Client.File newFile = web.GetFileByServerRelativeUrl(fnUrl); 
       context.Load(newFile); 
       context.ExecuteQuery(); 

       Web site = context.Web; 
       List docList = site.Lists.GetByTitle("Members"); 

       context.Load(docList); 
       context.ExecuteQuery(); 


       context.Load(docList.Fields.GetByTitle("Workflow Number")); 
       context.Load(docList.Fields.GetByTitle("Agreement Number")); 
       context.Load(docList.Fields.GetByTitle("First Name")); 
       context.Load(docList.Fields.GetByTitle("Surname")); 
       context.Load(docList.Fields.GetByTitle("ID Number")); 
       context.Load(docList.Fields.GetByTitle("Date of Birth")); 
       context.Load(docList.Fields.GetByTitle("Country")); 
       context.Load(docList.Fields.GetByTitle("Document Description")); 
       context.Load(docList.Fields.GetByTitle("Document Type")); 
       context.Load(docList.Fields.GetByTitle("Document Group")); 

       context.ExecuteQuery();         

*********NEED TO GET THE INTERNAL COLUMN NAMES FROM SHAREPOINT************ 
       var name = docList.Fields.GetByTitle("Workflow Number").InternalName; 
       var name2 = docList.Fields.GetByTitle("Agreement Number").InternalName; 
       var name3 = docList.Fields.GetByTitle("First Name").InternalName; 
       var name4 = docList.Fields.GetByTitle("Surname").InternalName; 
       var name5 = docList.Fields.GetByTitle("ID Number").InternalName; 
       var name6 = docList.Fields.GetByTitle("Date of Birth").InternalName; 
       var name7 = docList.Fields.GetByTitle("Country").InternalName; 
       var name8 = docList.Fields.GetByTitle("Document Description").InternalName; 
       var name9 = docList.Fields.GetByTitle("Document Type").InternalName; 
       var name10 = docList.Fields.GetByTitle("Document Group").InternalName; 
       var name11 = docList.Fields.GetByTitle("Unique Document Ref No").InternalName;  

**********NOW SAVE THE METADATA TO SHAREPOINT********** 
       newFile.ListItemAllFields[name] = "927015"; 
       newFile.ListItemAllFields[name2] = "1234565"; 
       newFile.ListItemAllFields[name3] = "Joe"; 
       newFile.ListItemAllFields[name4] = "Soap"; 
       newFile.ListItemAllFields[name5] = "7502015147852"; 
       newFile.ListItemAllFields[name6] = "1975-02-01"; 
       newFile.ListItemAllFields[name7] = "ZA"; 
       newFile.ListItemAllFields[name8] = "Test"; 
       newFile.ListItemAllFields[name9] = "Requirements"; 
       newFile.ListItemAllFields[name10] = "Requirements"; 
       newFile.ListItemAllFields[name11] = uniqueRefNo; 

       newFile.ListItemAllFields.Update(); 
       context.Load(newFile); 
       context.ExecuteQuery(); 
相關問題