如何使用客户端对象模型-Javascript创建文件夹和子文件夹

时间:2015-01-06 11:51:56

标签: sharepoint-clientobject

我有一个自定义列表表单,我们需要在doc库中创建一个文件夹,文件夹名称等于列表项title.and然后应该立即在新创建的文件夹中创建3个文件夹。 我可以在捕获列表项标题后创建顶级文件夹,但不知道如何在这个新创建的文件夹中创建子文件夹。有什么输入吗?

下面显示的代码,适用于创建顶级文件夹。需要知道,如何添加三个子文件夹。



function retrieveWebSite() {
    var clientContext;
    var oWebsite;
    var oList;
    var itemCreateInfo;

    clientContext = new SP.ClientContext.get_current();
    oWebsite = clientContext.get_web();
    oList = oWebsite.get_lists().getByTitle("Docs");

    itemCreateInfo = new SP.ListItemCreationInformation();
    itemCreateInfo.set_underlyingObjectType(SP.FileSystemObjectType.folder);
    itemCreateInfo.set_leafName("Top Folder");
    this.oListItem = oList.addItem(itemCreateInfo);
    this.oListItem.update();

    clientContext.load(this.oListItem);
    clientContext.executeQueryAsync(
        Function.createDelegate(this, successHandler),
        Function.createDelegate(this, errorHandler)
    );

    function successHandler() {
       alert('success');
    }

    function errorHandler() {
      alert('fail');
    }
}




1 个答案:

答案 0 :(得分:6)

以下示例演示如何使用SharePoint JSOM创建文件夹(包括嵌套):

var createFolder = function(listTitle, folderUrl,success,error)
{
    var ctx = SP.ClientContext.get_current();
    var list = ctx.get_web().get_lists().getByTitle(listTitle);
    var createFolderInternal = function(parentFolder,folderUrl,success,error)
    {
       var ctx = parentFolder.get_context();
       var folderNames = folderUrl.split('/');
       var folderName = folderNames[0];
       var curFolder = parentFolder.get_folders().add(folderName);
       ctx.load(curFolder);
       ctx.executeQueryAsync(
         function () {
            if (folderNames.length > 1)
            {
               var subFolderUrl = folderNames.slice(1,folderNames.length).join('/');
               createFolderInternal(curFolder, subFolderUrl,success,error);
            }  
            success(curFolder);
         }, 
         error);
    };
    createFolderInternal(list.get_rootFolder(), folderUrl,success,error);
};

<强>用法

假设必须在文档库下创建以下文件夹层次结构:

Archive
   |  
   2014
      |
      07

然后:

createFolder('Documents','Archive/2014/07',
  function(folder){
      console.log(String.format("Folder '{0}' has been created",folder.get_name()));
  },
  function(sender,args){
      console.log(args.get_message());
  });