2013-04-10 105 views

回答

2

你可以參考下面的代碼:

String UploadFile = @"C:\YourFile.txt"; 
String sharePointWebAdd = "http://yoursite.com/sites/Research/"; 
String docLib = "Shared Documents"; 

using (SPSite oSite = new SPSite(sharePointWebAdd)) 
{ 
    using (SPWeb oWeb = oSite.OpenWeb()) 
    { 
     if (!System.IO.File.Exists(UploadFile)) 
      throw new FileNotFoundException("File not found.", UploadFile);      

     SPFolder myLibrary = oWeb.Folders[docLib]; 

     // Prepare to upload 
     Boolean replaceExistingFiles = true; 
     String fileName = System.IO.Path.GetFileName(UploadFile); 
     FileStream fileStream = File.OpenRead(UploadFile); 

     // Upload document 
     SPFile spfile = myLibrary.Files.Add(fileName, fileStream, replaceExistingFiles); 

     // Commit 
     myLibrary.Update(); 
    } 
} 

另請參考:

http://msdn.microsoft.com/en-us/library/lists.lists.aspx

2

一點很難在這裏描述了。但我認爲你會從文件中獲得FileInfo。對於銀光應用程序,您需要添加兩個客戶端對象模型的引用dll。

Microsoft.SharePoint.Client.Silverlight.dll. 
Microsoft.SharePoint.Client.Silverlight.Runtime.dll. 

你可以從C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin目錄路徑找到上面的dll。

private ClientContext context; 
private Web web; 

private void UploadFile(FileInfo fileToUpload, string libraryTitle, string subfolderPath, bool fileOverwrite) 
    { 
     try 
     { 
      //Treatment of files and loading it to byte array [] 
      Stream str = null; 
      Int32 strLen, strRead; 

      str = fileToUpload.OpenRead(); 
      strLen = Convert.ToInt32(str.Length); 

      byte[] strArr = new byte[strLen]; 
      strRead = str.Read(strArr, 0, strLen); 

      using (context = new ClientContext("http://localhost/")) 
      { 
      web = context.Web; 

      //Defining where to find the files to tape record the library go 
      List destinationList = web.Lists.GetByTitle(libraryTitle); 

      //Creating a file 
      var fciFileToUpload = new FileCreationInformation(); 
      fciFileToUpload.Content = strArr; 

      //Must determine whether to upload files directly to the library or whether to upload the files to sub directories and stack your way to the file 
      string uploadLocation = fileToUpload.Name; 

      if (!string.IsNullOrEmpty(subfolderPath)) 
      { 
       uploadLocation = string.Format("{0}/{1}", subfolderPath, uploadLocation); 
      } 
      uploadLocation = string.Format("{0}/{1}/{2}", webUrl, libraryTitle, uploadLocation); 

      //Sets the path to the file where you want to upload and subor whether to overwrite the file or not 
      fciFileToUpload.Url = uploadLocation; 
      fciFileToUpload.Overwrite = fileOverwrite; 

      clFileToUpload = destinationList.RootFolder.Files.Add(fciFileToUpload); 

      //load web,list. 
      context.Load(web); 
      context.Load(destinationList, list => list.ItemCount); 
      context.Load(clFileToUpload); 
      context.Load(clFileToUpload.ListItemAllFields); 
      context.ExecuteQueryAsync(OnLoadingSucceeded, OnLoadingFailed); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
      unhideComponents(); 
     } 
    } 
    private void OnLoadingSucceeded(Object sender, ClientRequestSucceededEventArgs args) 
    { 
     Dispatcher.BeginInvoke(fileUploaded); // fileUploaded is function 
    } 

    private void OnLoadingFailed(object sender, ClientRequestFailedEventArgs args) 
    { 
     Dispatcher.BeginInvoke(fileNotUploaded); //fileNotUploaded is function 
    } 
+0

嗨夾具,thx答覆,但我得到的錯誤說:「文件操作不允許訪問路徑'C:\ aaa \ s.txt'被拒絕。 – Prageeth 2013-04-11 12:59:57

+0

它似乎無法訪問目錄路徑。移動到您有完全控制訪問權限的特定文件夾中的文件。 – Jigs 2013-04-11 16:54:36

相關問題