public object Resolve(object source, Dictionary<String, IResolver> resolvers = null, Boolean recursive = false)
        {
            var result = new List<Model.Folder>();

            var folders = source.GetPublicInstancePropertyValue("Folders");
            if (null == folders)
            {
                folders = source.GetPublicInstancePropertyValue("Folder1");
            }

            resolvers = new Dictionary<string, IResolver>();
            resolvers.Add($"{typeof(Model.Folder).FullName}.Folders", new FoldersFromSchemaToModelTypeResolver());
            resolvers.Add($"{typeof(Model.Folder).FullName}.Security", new SecurityFromSchemaToModelTypeResolver());

            if (null != folders)
            {
                foreach (var f in ((IEnumerable)folders))
                {
                    var targetItem = new Model.Folder();
                    PnPObjectsMapper.MapProperties(f, targetItem, resolvers, recursive);
                    result.Add(targetItem);
                }
            }

            return (result);
        }
        /// <summary>
        /// 新建文件夹
        /// </summary>
        /// <param name="FolderName"></param>
        /// <returns></returns>
        public ActionResult AddFolder(string FolderName, string FatherFolderID)
        {
            Model.Folder folder = new Model.Folder();
            if (FatherFolderID != null)
            {
                folder = new Model.Folder
                {
                    FounderID      = Convert.ToInt32(Request.Cookies["MyCook"]["UserID"]),
                    Folder_Name    = FolderName,
                    FatherFolderID = Convert.ToInt32(FatherFolderID),
                    DeleteState    = 0,
                    EstablishTime  = DateTime.Now
                };
            }
            else
            {
                folder = new Model.Folder
                {
                    FounderID      = Convert.ToInt32(Request.Cookies["MyCook"]["UserID"]),
                    Folder_Name    = FolderName,
                    FatherFolderID = 0,
                    DeleteState    = 0,
                    EstablishTime  = DateTime.Now
                };
            }
            int uid = Convert.ToInt32(Request.Cookies["MyCook"]["UserID"]);
            int jg  = 0;

            if (Home.YanZhenFolderByName(FolderName, Convert.ToInt32(FatherFolderID), uid) == null)
            {
                jg = Home.InsertFolder(folder);
            }
            return(Json(jg.ToString(), JsonRequestBehavior.AllowGet));
        }
示例#3
0
        public object Resolve(object source, Dictionary <String, IResolver> resolvers = null, Boolean recursive = false)
        {
            var result = new List <Model.Folder>();

            var folders = source.GetPublicInstancePropertyValue("Folders");

            if (null == folders)
            {
                folders = source.GetPublicInstancePropertyValue("Folder1");
            }

            resolvers = new Dictionary <string, IResolver>();
            resolvers.Add($"{typeof(Model.Folder).FullName}.Folders", new FoldersFromSchemaToModelTypeResolver());
            resolvers.Add($"{typeof(Model.Folder).FullName}.Security", new SecurityFromSchemaToModelTypeResolver());

            // DefaultColumnValues
            var defaultColumnValueTypeName      = $"{PnPSerializationScope.Current?.BaseSchemaNamespace}.StringDictionaryItem, {PnPSerializationScope.Current?.BaseSchemaAssemblyName}";
            var defaultColumnValueType          = Type.GetType(defaultColumnValueTypeName, true);
            var defaultColumnValueKeySelector   = CreateSelectorLambda(defaultColumnValueType, "Key");
            var defaultColumnValueValueSelector = CreateSelectorLambda(defaultColumnValueType, "Value");

            resolvers.Add($"{typeof(Model.Folder).FullName}.DefaultColumnValues", new FromArrayToDictionaryValueResolver <string, string>(defaultColumnValueType, defaultColumnValueKeySelector, defaultColumnValueValueSelector));

            if (null != folders)
            {
                foreach (var f in ((IEnumerable)folders))
                {
                    var targetItem = new Model.Folder();
                    PnPObjectsMapper.MapProperties(f, targetItem, resolvers, recursive);
                    result.Add(targetItem);
                }
            }

            return(result);
        }
示例#4
0
 /// <summary>
 /// 新增文件夹
 /// </summary>
 /// <param name="folder"></param>
 /// <returns></returns>
 public int InsertFolder(Model.Folder folder)
 {
     using (var db = new Model.ZKJSkyDriveEntities())
     {
         db.Entry <Model.Folder>(folder).State = System.Data.Entity.EntityState.Added;
         return(db.SaveChanges());
     }
 }
        /// <summary>
        /// 查询子文件
        /// </summary>
        /// <param name="FolderName"></param>
        /// <returns></returns>
        public ActionResult OpenFolder3(string FolderName)
        {
            Model.Folder Folder = Home.GetFolderByID(Convert.ToInt32(FolderName), Convert.ToInt32(Request.Cookies["MyCook"]["UserID"]));
            var          list   = Home.GetShareDataByID(Folder.Folder_ID);

            var list1 = list.Select(x => new { x.Store_data_ID, x.Real_FileName, x.File_Size, EstablishTime = x.EstablishTime.ToString("yyyy-MM-dd"), x.icon });

            return(Json(list1, JsonRequestBehavior.AllowGet));
        }
        /// <summary>
        /// 查询子文件夹
        /// </summary>
        /// <param name="FolderName"></param>
        /// <returns></returns>
        public ActionResult OpenFolder2(string FolderName)
        {
            Model.Folder Folder = Home.GetFolderByID(Convert.ToInt32(FolderName), Convert.ToInt32(Request.Cookies["MyCook"]["UserID"]));
            var          list   = Home.GetFolderByID(Folder.Folder_ID);

            var list1 = list.Select(x => new { x.Folder_ID, x.Folder_Name, EstablishTime = x.EstablishTime.ToString("yyyy-MM-dd") });

            return(Json(list1, JsonRequestBehavior.AllowGet));
        }
示例#7
0
        public static string GetFolder(Model.Folder fd)
        {
            string rootFolder = "";

            if (fd == Model.Folder.代码生成器)
            {
                rootFolder = "CodeMaker";
            }
            return(rootFolder);
        }
        private void ProcessFolderRow(Web web, ListItem listItem, List siteList, ListInstance listInstance, Model.Configuration.Lists.Lists.ExtractQueryConfiguration queryConfig, ProvisioningTemplate template, PnPMonitoredScope scope)
        {
            listItem.EnsureProperties(it => it.ParentList.RootFolder.ServerRelativeUrl);
            string serverRelativeListUrl = listItem.ParentList.RootFolder.ServerRelativeUrl;
            string folderPath            = listItem.FieldValuesAsText["FileRef"].Substring(serverRelativeListUrl.Length).TrimStart(new char[] { '/' });

            if (!string.IsNullOrWhiteSpace(folderPath))
            {
                //listItem.EnsureProperties(it => it.Folder.UniqueId);
                string[]     folderSegments = folderPath.Split('/');
                Model.Folder pnpFolder      = null;
                for (int i = 0; i < folderSegments.Length; i++)
                {
                    if (i == 0)
                    {
                        pnpFolder = listInstance.Folders.FirstOrDefault(f => f.Name.Equals(folderSegments[i], StringComparison.CurrentCultureIgnoreCase));
                        if (pnpFolder == null)
                        {
                            string pathToCurrentFolder = string.Format("{0}/{1}", serverRelativeListUrl, string.Join("/", folderSegments.Take(i + 1)));
                            pnpFolder = ExtractFolderSettings(web, siteList, pathToCurrentFolder, scope, queryConfig);
                            listInstance.Folders.Add(pnpFolder);
                        }
                    }
                    else
                    {
                        var childFolder = pnpFolder.Folders.FirstOrDefault(f => f.Name.Equals(folderSegments[i], StringComparison.CurrentCultureIgnoreCase));
                        if (childFolder == null)
                        {
                            string pathToCurrentFolder = string.Format("{0}/{1}", serverRelativeListUrl, string.Join("/", folderSegments.Take(i + 1)));
                            childFolder = ExtractFolderSettings(web, siteList, pathToCurrentFolder, scope, queryConfig);
                            pnpFolder.Folders.Add(childFolder);
                        }
                        pnpFolder = childFolder;
                    }
                }
            }
        }
 public static Model.Folder FromSchemaToTemplateFolderV201612(this V201612.Folder folder)
 {
     Model.Folder result = new Model.Folder(folder.Name, null, folder.Security.FromSchemaToTemplateObjectSecurityV201612());
     if (folder.Folder1 != null && folder.Folder1.Length > 0)
     {
         result.Folders.AddRange(from child in folder.Folder1 select child.FromSchemaToTemplateFolderV201612());
     }
     return (result);
 }
示例#10
0
        public ActionResult Index(FormCollection form)
        {
            List <string> paths = new List <string>();

            if (Request.Files.Count == 0)
            {
                //Directory.CreateDirectory("");
                //Request.Files.Count 文件数为0上传不成功
                return(View());
            }

            //文件大小不为0
            HttpFileCollectionBase files = Request.Files;
            //取得目标文件夹的路径
            string target = Server.MapPath("~/Upload/" + Request.Cookies["MyCook"]["UserID"] + "/");
            int    cg     = 0;
            int    sb     = -1;
            int    x      = 0;

            for (int i = 0; i < files.Count; i++)
            {
                if (files[i].ContentLength == 0)
                {
                    //文件大小(以字节为单位)为0时,做一些操作
                    //失败文件数,失败+1
                    sb = sb + 1;
                    //return Content("<script>alert('文件大小为0,上传失败')</script>");
                }
                else
                {
                    string filename = files[i].FileName;//取得文件名字
                    //判断上传文件是否包含文件夹,含/就是包含文件夹路径的
                    if (filename.Contains("/"))
                    {
                        //根据/分割,以便将文件名与文件夹路径分开
                        string[] b2 = filename.Split('/');
                        //获得文件名
                        string wenjian = b2[b2.Length - 1];
                        //将数组转为泛型集合操作
                        List <string> newb2 = new List <string>(b2);
                        //排除集合最后一个元素,也就是文件名,得到文件夹路径
                        newb2.Remove(newb2.Last <string>());
                        //定义一个文件夹路径变量
                        string lujin = null;
                        //遍历去除文件名的文件路径集合

                        foreach (var item in newb2)
                        {
                            //拼接文件路径
                            lujin += item + "\\";
                            if (x > 0)
                            {
                                Model.Folder folder = new Model.Folder
                                {
                                    FounderID      = Convert.ToInt32(Request.Cookies["MyCook"]["UserID"]),
                                    Folder_Name    = item,
                                    FatherFolderID = Home.GetNewFolderId(Convert.ToInt32(Request.Cookies["MyCook"]["UserID"])),
                                    DeleteState    = 0,
                                    EstablishTime  = DateTime.Now
                                };
                                if (Home.GetFolderByName(item, Convert.ToInt32(Request.Cookies["MyCook"]["UserID"])) == null)
                                {
                                    Home.InsertFolder(folder);
                                    x = x + 1;
                                }
                            }
                            else
                            {
                                Model.Folder folder = new Model.Folder
                                {
                                    FounderID      = Convert.ToInt32(Request.Cookies["MyCook"]["UserID"]),
                                    Folder_Name    = item,
                                    FatherFolderID = 0,
                                    DeleteState    = 0,
                                    EstablishTime  = DateTime.Now
                                };
                                if (Home.GetFolderByName(item, Convert.ToInt32(Request.Cookies["MyCook"]["UserID"])) == null)
                                {
                                    Home.InsertFolder(folder);
                                    x = x + 1;
                                }
                            }
                            //E:\C#作业\Baidu-pan\Baidu.Web\Upload\文件夹上传测试文档\测试2\5c70e0a0-90a0-4d95-b7c9-c95284f41ee2.txt
                        }


                        //创建文件夹路径
                        Directory.CreateDirectory(target + lujin);

                        string newfilename = filename;

                        //使用GUID 全球唯一标识符给文件重名称:GUID + 后缀名
                        newfilename = Guid.NewGuid() + filename.Substring(filename.LastIndexOf("."));

                        //获取存储的目标地址,也就是文件夹位置
                        string path = target + lujin + newfilename;
                        //保存文件
                        files[i].SaveAs(path);
                        //成功上传文件数,成功+1
                        cg = cg + 1;
                        paths.Add(path);


                        //将文件信息保存到数据库

                        //覆盖重复文件
                        Model.Store_data oldStore_data = Home.GetFile(wenjian, Convert.ToInt32(Request.Cookies["MyCook"]["UserID"]));
                        if (oldStore_data != null)
                        {
                            System.IO.File.Delete(oldStore_data.DataRoute);
                            Home.DeleteOldFile(oldStore_data.Store_data_ID);
                        }

                        string[]         icon  = wenjian.Split('.');
                        string           icons = Server.MapPath("~/Icon/" + icon[icon.Length - 1].ToUpper() + ".png");
                        Model.Store_data data  = null;
                        if (System.IO.File.Exists(icons))
                        {
                            data = new Model.Store_data
                            {
                                User_ID       = Convert.ToInt32(Request.Cookies["MyCook"]["UserID"]),
                                DataRoute     = path,
                                Real_FileName = wenjian,
                                File_Size     = Home.GetFileSize(files[i].ContentLength),
                                Folder_ID     = Home.GetNewFolderId(Convert.ToInt32(Request.Cookies["MyCook"]["UserID"])),
                                EstablishTime = DateTime.Now,
                                DeleteState   = 0,
                                SuffixName    = filename.Substring(filename.LastIndexOf(".")),
                                icon          = "/Icon/" + icon[icon.Length - 1].ToUpper() + ".png"
                            };
                        }
                        else
                        {
                            data = new Model.Store_data
                            {
                                User_ID       = Convert.ToInt32(Request.Cookies["MyCook"]["UserID"]),
                                DataRoute     = path,
                                Real_FileName = wenjian,
                                File_Size     = Home.GetFileSize(files[i].ContentLength),
                                Folder_ID     = Home.GetNewFolderId(Convert.ToInt32(Request.Cookies["MyCook"]["UserID"])),
                                EstablishTime = DateTime.Now,
                                DeleteState   = 0,
                                SuffixName    = filename.Substring(filename.LastIndexOf(".")),
                                icon          = "/Icon/weizhi.png"
                            };
                        }
                        Home.Insert(data);
                    }
                    else
                    {
                        string newfilename = filename;

                        //使用GUID 全球唯一标识符给文件重名称:GUID + 后缀名
                        newfilename = Guid.NewGuid() + filename.Substring(filename.LastIndexOf("."));

                        //获取存储的目标地址,也就是文件夹位置
                        string path = target + newfilename;
                        files[i].SaveAs(path);
                        cg = cg + 1;
                        paths.Add(path);



                        //将文件信息保存到数据库

                        //覆盖重复文件
                        Model.Store_data oldStore_data = Home.GetFile(filename, Convert.ToInt32(Request.Cookies["MyCook"]["UserID"]));
                        if (oldStore_data != null)
                        {
                            System.IO.File.Delete(oldStore_data.DataRoute);
                            Home.DeleteOldFile(oldStore_data.Store_data_ID);
                        }
                        string[]         icon = filename.Split('.');
                        Model.Store_data data = null;
                        if (System.IO.File.Exists(Server.MapPath("~/Icon/" + icon[icon.Length - 1].ToUpper() + ".png")))
                        {
                            data = new Model.Store_data
                            {
                                User_ID       = Convert.ToInt32(Request.Cookies["MyCook"]["UserID"]),
                                DataRoute     = path,
                                Real_FileName = filename,
                                File_Size     = Home.GetFileSize(files[i].ContentLength),
                                Folder_ID     = 0,
                                EstablishTime = DateTime.Now,
                                DeleteState   = 0,
                                SuffixName    = filename.Substring(filename.LastIndexOf(".")),
                                icon          = "/Icon/" + icon[icon.Length - 1].ToUpper() + ".png"
                            };
                        }
                        else
                        {
                            data = new Model.Store_data
                            {
                                User_ID       = Convert.ToInt32(Request.Cookies["MyCook"]["UserID"]),
                                DataRoute     = path,
                                Real_FileName = filename,
                                File_Size     = Home.GetFileSize(files[i].ContentLength),
                                Folder_ID     = 0,
                                EstablishTime = DateTime.Now,
                                DeleteState   = 0,
                                SuffixName    = filename.Substring(filename.LastIndexOf(".")),
                                icon          = "/Icon/weizhi.png"
                            };
                        }

                        Home.Insert(data);
                    }
                }
            }
            return(RedirectToAction("Index"));
            //return Content(@"<script> alert('成功" + cg + "个,失败" + sb + "个'); window.location.href = '/Home/Index'; </script>");
        }
        public Model.Folder ExtractFolderSettings(Web web, List siteList, string serverRelativePathToFolder, PnPMonitoredScope scope, Model.Configuration.Lists.Lists.ExtractQueryConfiguration queryConfig)
        {
            Model.Folder pnpFolder = null;
            try
            {
                Microsoft.SharePoint.Client.Folder spFolder = web.GetFolderByServerRelativeUrl(serverRelativePathToFolder);
                web.Context.Load(spFolder,
                                 f => f.Name,
                                 f => f.ServerRelativeUrl,
                                 f => f.Properties,
                                 f => f.ListItemAllFields,
                                 f => f.ListItemAllFields.RoleAssignments,
                                 f => f.ListItemAllFields.RoleAssignments.Include(r => r.Member, r => r.RoleDefinitionBindings),
                                 f => f.ListItemAllFields.HasUniqueRoleAssignments,
                                 f => f.ListItemAllFields.ParentList,
                                 f => f.ListItemAllFields.ContentType.StringId);
                web.Context.Load(web,
                                 w => w.AssociatedOwnerGroup,
                                 w => w.AssociatedMemberGroup,
                                 w => w.AssociatedVisitorGroup,
                                 w => w.Title,
                                 w => w.Url,
                                 w => w.RoleDefinitions.Include(r => r.RoleTypeKind, r => r.Name),
                                 w => w.ContentTypes.Include(c => c.Id, c => c.Name, c => c.StringId));
                web.Context.ExecuteQueryRetry();

                pnpFolder = new Model.Folder(spFolder.Name);

                //export PnPFolder Properties
                if (spFolder.Properties.FieldValues.Any())
                {
                    foreach (var propKey in spFolder.Properties.FieldValues.Keys.Where(k => !k.StartsWith("vti_") && !k.StartsWith("docset_")))
                    {
                        pnpFolder.PropertyBagEntries.Add(new PropertyBagEntry()
                        {
                            Key = propKey, Value = spFolder.Properties.FieldValues[propKey].ToString()
                        });
                    }
                }

                //export PnPFolder FieldValues
                if (spFolder.ListItemAllFields.FieldValues.Any())
                {
                    var list = spFolder.ListItemAllFields.ParentList;

                    var fields = list.Fields;
                    web.Context.Load(fields, fs => fs.IncludeWithDefaultProperties(f => f.TypeAsString, f => f.InternalName, f => f.Title));
                    web.Context.ExecuteQueryRetry();

                    var fieldValues = spFolder.ListItemAllFields.FieldValues;

                    var fieldValuesAsText = spFolder.ListItemAllFields.EnsureProperty(li => li.FieldValuesAsText).FieldValues;

                    #region //**** get correct Content Type
                    string ctId = string.Empty;
                    foreach (var ct in web.ContentTypes.OrderByDescending(c => c.StringId.Length))
                    {
                        if (spFolder.ListItemAllFields.ContentType.StringId.StartsWith(ct.StringId))
                        {
                            pnpFolder.ContentTypeID = ct.StringId;
                            break;
                        }
                    }
                    #endregion //**** get correct Content Type

                    var filteredFieldValues = fieldValues.ToList();
                    if (queryConfig != null && queryConfig.ViewFields != null && queryConfig.ViewFields.Count > 0)
                    {
                        filteredFieldValues = fieldValues.Where(f => queryConfig.ViewFields.Contains(f.Key)).ToList();
                    }
                    foreach (var fieldValue in filteredFieldValues)
                    {
                        if (fieldValue.Value != null && !string.IsNullOrEmpty(fieldValue.Value.ToString()))
                        {
                            var    field = siteList.Fields.FirstOrDefault(fs => fs.InternalName == fieldValue.Key);
                            string value = string.Empty;

                            //ignore read only fields
                            if (!field.ReadOnlyField || WriteableReadOnlyField.Contains(field.InternalName.ToLower()))
                            {
                                value = TokenizeValue(web, field.TypeAsString, fieldValue, fieldValuesAsText[field.InternalName]);
                            }

                            if (fieldValue.Key.Equals("ContentTypeId", StringComparison.CurrentCultureIgnoreCase))
                            {
                                value = null; //ignore here since already in dataRow
                            }

                            if (fieldValue.Key.Equals("HTML_x0020_File_x0020_Type", StringComparison.CurrentCultureIgnoreCase) &&
                                fieldValuesAsText["HTML_x0020_File_x0020_Type"] == "OneNote.Notebook")
                            {
                                pnpFolder.Properties.Add("File_x0020_Type", "OneNote.Notebook");
                                pnpFolder.Properties.Add(fieldValue.Key, "OneNote.Notebook");
                                value = null;
                            }

                            // We process real values only
                            if (!string.IsNullOrWhiteSpace(value) && value != "[]")
                            {
                                pnpFolder.Properties.Add(fieldValue.Key, value);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                scope.LogError(ex, "Extract of Folder {0} failed", serverRelativePathToFolder);
            }
            return(pnpFolder);
        }