2013-04-10 90 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

相关问题