SharePoint: Comment créer un dossier dans une bibliothèque de documents en utilisant les services Web

StackOverflow https://stackoverflow.com/questions/1630824

  •  06-07-2019
  •  | 
  •  

Question

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.

Le webservice 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.

Vous ne savez pas quoi faire, veuillez aider

Était-ce utile?

La solution

J'ai trouvé cette méthode efficace:

    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();

Autres conseils

Ceci est le code pour une requête similaire en JAVA 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 appeler la fonction makeFolder

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

Je sais que la question est assez ancienne, mais si quelqu'un d'autre la découvre, voici comment je l'ai faite:

       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, c'est pourquoi j'ai utilisé la méthode de chargement de chaîne asynchrone, mais vous pouvez le faire de différentes manières avec la même méthode de publication http

J'ai travaillé avec les services Web, mais je ne trouve aucun code qui crée un dossier. Toutefois, j'ai un code qui copie les fichiers d'un partage réseau dans un dossier existant d'une bibliothèque de documents SharePoint à l'aide de chemins UNC. Il utilise System.IO.File. Peut-être pourriez-vous utiliser cette technique pour créer un dossier?

Création de dossiers dans SharePoint à l'aide de de l'espace de travail de document 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('"', '-'), @"[.~#%&*{}:<>?|/]", "-");
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top