2009-10-27 9 views
3

Je dois créer un simple dossier dans une bibliothèque de documents dans SharePoint, mais je n'arrive pas à trouver un morceau de documentation sur le sujet.SharePoint: Comment créer un dossier dans une bibliothèque de documents s'il vous plaît utiliser les services Web

Le service Web dws semble être utilisé pour créer des dossiers physiques dans un espace de travail, j'ai besoin d'un moyen de créer un dossier dans une bibliothèque de documents.

Je ne sais pas quoi faire, s'il vous plaît aider

+0

Est-ce que ces réponses créent les répertoires parents au besoin, à savoir si elle est appelée avec '/ une/two' vont-ils créer'/One' et '/ une/two'? – golimar

Répondre

4

J'ai trouvé que cette méthode fonctionne:

HttpWebRequest request = (System.Net.HttpWebRequest)HttpWebRequest.Create("http://mySite/MyList/MyfolderIwantedtocreate"); 
    request.Credentials = CredentialCache.DefaultCredentials; 
    request.Method = "MKCOL"; 
    HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse(); 
    response.Close(); 
0

Je l'ai fait un peu de travail avec les services Web, mais je ne peux pas trouver un code qui crée un fichier. Cependant, j'ai du code qui copie des fichiers à partir d'un partage réseau vers un dossier existant dans une bibliothèque de documents SharePoint utilisant des chemins UNC. Il utilise System.IO.File - peut-être pourriez-vous utiliser cette technique pour créer un dossier?

0

Je sais que c'est une question assez ancienne, mais au cas où quelqu'un d'autre trouve, voilà comment je l'ai fait:

 String CAML = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + 
     "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + 
      "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " + 
      "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" + 
     "<soap:Body>" + 
     "<CreateFolder " + "xmlns=\"http://schemas.microsoft.com/sharepoint/soap/dws/\">"+ 
      "<url>" + ParentFolder+'/'+NewFolderName+ "</url>"+ 
     "</CreateFolder>"+ 
     "</soap:Body>" + 
     "</soap:Envelope>"; 

     String uri = "http://[your site]/_vti_bin/dws.asmx"; 

     WebClient client = new WebClient(); 
     client.Headers["SOAPAction"] = "http://schemas.microsoft.com/sharepoint/soap/dws/CreateFolder"; 
     client.Headers["content-type"] = "text/xml; charset=utf-8"; 
     client.Encoding = Encoding.UTF8; 
     client.UploadStringCompleted += UploadStringCompleted; 
     try 
     { 
      client.UploadStringAsync(new Uri(uri, UriKind.Absolute), "POST", CAML); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error in upload string async: " + ex.Message); 
     } 

j'utilisais silverlight, qui est la raison pour laquelle je chaîne de téléchargement async , mais cela peut être fait d'autres façons avec la même méthode de post http

+0

Il existe une autre solution qui utilise Lists.asmx au lieu de Dws.asmx: http://sharepoint.stackexchange.com/questions/50997/how-to-create-a-folder-in-sharepoint-2010-document-library- utilisant-reste-ou-http-moi – golimar

2

Ceci est le code de demande similaire en Java en utilisant apache HttpClient

import org.apache.http.*; 

private static HttpResponse makeFolder(
      String url, 
      DefaultHttpClient httpClient) throws Exception { 
    BasicHttpRequest httpPost = new BasicHttpRequest("MKCOL", url); 
    HttpUriRequest httpUriRequest = new RequestWrapper(httpPost); 

    HttpResponse status = httpClient.execute(httpUriRequest); 
    EntityUtils.consume(status.getEntity()); 
    return status; 
} 

code pour créer le httpClient et appel la makeFolder Fonction

DefaultHttpClient httpClient = new DefaultHttpClient(); 
httpClient.getCredentialsProvider().setCredentials(
     AuthScope.ANY, 
     new NTCredentials(config.getUserName(), config.getPasswords(), 
         "", config.getDomain())); 
0

dossiers créés dans sharepoint en utilisant Document Workspace Web Service (Dws). Fonctionne très bien.

public static bool CreateSPFolder(string FolderDir, string FolderName, yourCredentialsClass credentials) 
{ 
    FolderName = ReplaceInvalidChars(FolderName); 

    // create an instance of the sharepoint service reference 
    Dws.Dws dwsWebService = new Dws.Dws(); 
    dwsWebService.Url = credentials.SharePointUrl + "/_vti_bin/Dws.asmx"; 
    dwsWebService.Credentials = new NetworkCredential(credentials.UserId, credentials.Password); 

    string result = dwsWebService.CreateFolder(string.Format("{0}/{1}",FolderDir,FolderName)); 
    dwsWebService.Dispose(); 

    if (result == null) 
    { 
     throw new Exception("No response creating SharePoint folder"); 
    } 

    if (result.Equals("<Result/>")) 
    { 
     return true; 
    } 

    return false; 
} 

public static string ReplaceInvalidChars(string strIn) 
{ 
    return Regex.Replace(strIn.Replace('"', '-'), @"[.~#%&*{}:<>?|/]", "-"); 
}