شير: كيفية إنشاء مجلد في مكتبة مستندات يرجى استخدام خدمات الويب

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

  •  06-07-2019
  •  | 
  •  

سؤال

ولست بحاجة لإنشاء مجلد بسيطة في مكتبة مستندات في SharePoint، ولكن لا يمكنني العثور على ما يبدو قصاصة من الوثائق المتعلقة بالموضوع.

ويبدو أن خدمة ويب DWS ليتم استخدامها لإنشاء مجلدات المادية في مساحة عمل، وأنا بحاجة إلى وسيلة لإنشاء مجلد في مكتبة المستندات.

ولست متأكدا ما يجب القيام به، الرجاء المساعدة

هل كانت مفيدة؟

المحلول

ولقد وجدت هذه الطريقة في العمل:

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

نصائح أخرى

وهذا هو رمز للطلب مماثل في JAVA باستخدام اباتشي 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;
}

ورمز لإنشاء HttpClient وإصلاحه واستدعاء وظيفة makeFolder

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

وأعرف أن هذا هو السؤال القديم جدا، ولكن في حالة شخص آخر يجد، هذه هي الطريقة لقد فعلت ذلك:

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

وكنت تستخدم سيلفرلايت، وهذا هو السبب كنت تحميل سلسلة المتزامن، ولكن هذا يمكن أن يتم بطرق أخرى مع آخر نفس الأسلوب HTTP

ولقد فعلت بعض العمل مع خدمات ويب ولكن لا أستطيع أن أجد أية تعليمات برمجية بإنشاء مجلد. ومع ذلك، لدي التعليمات البرمجية التي نسخ الملفات من مشاركة شبكة اتصال إلى مجلد موجود في مكتبة مستندات SharePoint باستخدام مسارات UNC. ويستخدم System.IO.File - ربما يمكن استخدام تلك التقنية لإنشاء مجلد

والمجلدات التي تم إنشاؤها في SharePoint باستخدام الويب مساحة عمل المستند خدمة (دي دبليو اس) . يعمل كبيرة.

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('"', '-'), @"[.~#%&*{}:<>?|/]", "-");
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top