Exemple #1
0
        /// <summary>
        /// Deletes all files in the given directory.
        /// <para>If recursive flag is `true` all subdirectories and files will be removed.</para>
        /// If recursive flag is `false` the method will fail if the target is not empty.
        /// </summary>
        /// <param name="directoryInfo">Info of directory to clear</param>
        /// <param name="recursive">If <paramref name="recursive"/> is true then all subfolders are also deleted.</param>
        /// <remarks>Function loads every file and attribute. Alls read-only flags will be removed before removing.</remarks>
        public static void DeleteDirectory(DirectoryDetail directoryInfo, bool recursive = false)
        {
            // Contents
            if (recursive)
            {
                // search all contents
                var subFiles = FindPaths(directoryInfo.FullNameUnc, pathFormatReturn: UncOrRegular.UNC);
                foreach (var item in subFiles)
                {
                    DeleteFileUnc(item);
                }

                var subDirs = EnumerateDirectories(directoryInfo.PathInfo);
                foreach (var subDir in subDirs)
                {
                    DeleteDirectory(subDir, true);
                }
            }

            // Remove specified
            var removed    = Win32SafeNativeMethods.RemoveDirectory(directoryInfo.FullNameUnc);
            var win32Error = Marshal.GetLastWin32Error();

            if (!removed)
            {
                NativeExceptionMapping(directoryInfo.FullName, win32Error);
            }
        }
        public ActionResult Create([Bind(Include = "DirectoryId")] Models.Directory directory)
        {
            if (ModelState.IsValid)
            {
                List <DirectoryDetail> directoryDetails = new List <DirectoryDetail>();
                for (int i = 0; i < Request.Files.Count; i++)
                {
                    var file = Request.Files[i];

                    if (file != null && file.ContentLength > 0)
                    {
                        var             fileName        = Path.GetFileName(file.FileName);
                        DirectoryDetail directoryDetail = new DirectoryDetail()
                        {
                            FileName  = fileName,
                            Extension = Path.GetExtension(fileName),
                            Id        = Guid.NewGuid()
                        };
                        directoryDetails.Add(directoryDetail);

                        var path = Path.Combine(Server.MapPath("~/Content/Files/"), directoryDetail.Id + directoryDetail.Extension);
                        file.SaveAs(path);
                    }
                }

                directory.DirectoryDetail = directoryDetails;
                db.Directories.Add(directory);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(directory));
        }