Come si carica un file in una raccolta documenti nel punto di condivisione?

Come si carica a livello di codice un file in una raccolta documenti in sharepoint?

Attualmente sto creando un’applicazione Windows utilizzando C # che aggiungerà documenti a un elenco di librerie di documenti.

È ansible caricare documenti nelle librerie di SharePoint utilizzando il modello di oggetti oi servizi Web di SharePoint .

Carica utilizzando il modello a oggetti:

String fileToUpload = @"C:\YourFile.txt"; String sharePointSite = "http://yoursite.com/sites/Research/"; String documentLibraryName = "Shared Documents"; using (SPSite oSite = new SPSite(sharePointSite)) { using (SPWeb oWeb = oSite.OpenWeb()) { if (!System.IO.File.Exists(fileToUpload)) throw new FileNotFoundException("File not found.", fileToUpload); SPFolder myLibrary = oWeb.Folders[documentLibraryName]; // Prepare to upload Boolean replaceExistingFiles = true; String fileName = System.IO.Path.GetFileName(fileToUpload); FileStream fileStream = File.OpenRead(fileToUpload); // Upload document SPFile spfile = myLibrary.Files.Add(fileName, fileStream, replaceExistingFiles); // Commit myLibrary.Update(); } } 

se ottieni questo errore “Il valore non rientra nell’intervallo previsto ” in questa riga:

 SPFolder myLibrary = oWeb.Folders[documentLibraryName]; 

usa invece questo per correggere l’errore:

 SPFolder myLibrary = oWeb.GetList(URL OR NAME).RootFolder; 

Usa sempre URl per ottenere Liste o altri perché sono unici, i nomi non sono il modo migliore;)

  string filePath = @"C:\styles\MyStyles.css"; string siteURL = "http://MyDomain.net/"; string libraryName = "Style Library"; using (SPSite oSite = new SPSite(siteURL)) { using (SPWeb oWeb = oSite.OpenWeb()) { if (!System.IO.File.Exists(filePath)) throw new FileNotFoundException("File not found.", filePath); SPFolder libFolder = oWeb.Folders[libraryName]; // Prepare to upload string fileName = System.IO.Path.GetFileName(filePath); FileStream fileStream = File.OpenRead(filePath); //Check the existing File out if the Library Requires CheckOut if (libFolder.RequiresCheckout) { try { SPFile fileOld = libFolder.Files[fileName]; fileOld.CheckOut(); } catch {} } // Upload document SPFile spfile = libFolder.Files.Add(fileName, fileStream, true); // Commit myLibrary.Update(); //Check the File in and Publish a Major Version if (libFolder.RequiresCheckout) { spFile.CheckIn("Upload Comment", SPCheckinType.MajorCheckIn); spFile.Publish("Publish Comment"); } } } 

In alternativa ai servizi web, è ansible utilizzare la chiamata al documento put dall’API RPC di FrontPage. Questo ha l’ulteriore vantaggio di consentire di fornire meta-dati (colonne) nella stessa richiesta dei dati del file. L’ovvio inconveniente è che il protocollo è un po ‘più oscuro (rispetto ai webservices molto ben documentati).

Per un’applicazione di riferimento che spiega l’utilizzo di FrontPack RPC, vedere il progetto SharePad su CodePlex.

Con la nuova libreria SharePoint 2013, sono riuscito a fare qualcosa del genere:

  private void UploadToSharePoint(string p, out string newUrl) //p is path to file to load { string siteUrl = "https://myCompany.sharepoint.com/site/"; //Insert Credentials ClientContext context = new ClientContext(siteUrl); SecureString passWord = new SecureString(); foreach (var c in "mypassword") passWord.AppendChar(c); context.Credentials = new SharePointOnlineCredentials("myUserName", passWord); Web site = context.Web; //Get the required RootFolder string barRootFolderRelativeUrl = "Shared Documents/foo/bar"; Folder barFolder = site.GetFolderByServerRelativeUrl(barRootFolderRelativeUrl); //Create new subFolder to load files into string newFolderName = baseName + DateTime.Now.ToString("yyyyMMddHHmm"); barFolder.Folders.Add(newFolderName); barFolder.Update(); //Add file to new Folder Folder currentRunFolder = site.GetFolderByServerRelativeUrl(barRootFolderRelativeUrl + "/" + newFolderName); FileCreationInformation newFile = new FileCreationInformation { Content = System.IO.File.ReadAllBytes(@p), Url = Path.GetFileName(@p), Overwrite = true }; currentRunFolder.Files.Add(newFile); currentRunFolder.Update(); context.ExecuteQuery(); //Return the URL of the new uploaded file newUrl = siteUrl + barRootFolderRelativeUrl + "/" + newFolderName + "/" + Path.GetFileName(@p); }