Example #1
0
        public async Task <IActionResult> Upload(FileData fileData)
        {
            if (ModelState.IsValid)
            {
                var CurrentDate       = DateTime.Now;
                var UploadDate        = CurrentDate.ToString("yyyyMMdd_hhmmss");
                var userfileName      = User.Identity.Name.ToString();
                var RootFolder        = _hostingEnvironment.WebRootPath;
                var UsersFileLocation = "UsersDirectory";
                var RootFfolderString = "wwwroot";
                var ObjFileExtension  = ".ifc";
                var UserDirectory     = $"{_hostingEnvironment.WebRootPath}/{UsersFileLocation}/{userfileName}/{UploadDate}";
                //var UserFilesDirectoryRelative = $"{RootFfolderString}/{UsersFileLocation}/{userfileName}/{UploadDate}";
                var UserFilesDirectoryRelative = $"{UsersFileLocation}/{userfileName}/{UploadDate}";
                //var ImageFileLocationPaths = new List<String>();
                //Check if user Directory exsists , if not creates new directory
                var exsits = Directory.Exists(UserDirectory);
                if (!exsits)
                {
                    Directory.CreateDirectory(UserDirectory);
                }
                foreach (var IFCFile in fileData.IFCFile)
                {
                    var filePathName  = ContentDispositionHeaderValue.Parse(IFCFile.ContentDisposition).FileName.Trim('"');
                    var fileExtention = Path.GetExtension(filePathName);
                    if (!(fileExtention == ".ifc" || fileExtention == ".IFC"))
                    {
                        return(RedirectToAction("ErrorPage"));
                    }
                    var uploads      = Path.Combine(RootFolder, UsersFileLocation, userfileName, UploadDate);
                    var fileName     = Guid.NewGuid().ToString("N").Substring(0, 10);
                    var FileNameFull = fileName + fileExtention;
                    var FileNameObj  = fileName + ObjFileExtension;
                    var StaticPath   = Path.Combine(uploads, filePathName);
                    var StaticPathNameNoExtension = Path.Combine(uploads, filePathName);
                    var RelativePaths             = $"{UserFilesDirectoryRelative}/{fileName}" + $"{ObjFileExtension}";
                    //the image will be saved with a unique filename
                    FileStream DestinationStream = new FileStream(StaticPath, FileMode.CreateNew);
                    //ImageFileLocationPaths.Add(PathObjRelative);
                    //the image will be saved with a unique filename
                    // ImageFile.CopyToAsync(DestinationStream);
                    IFCFile.CopyTo(DestinationStream);

                    DestinationStream.Flush();
                    DestinationStream.Dispose();
                    DestinationStream.Close();
                    var currentUser = await _userManager.FindByNameAsync(User.Identity.Name);

                    var ObjectFile = new IFCFile
                    {
                        FileName            = filePathName,
                        StaticFilePath      = StaticPathNameNoExtension,
                        RelativeFilePath    = uploads,// Replaced with directory path
                        FK_ApplicatioUserId = currentUser.Id,
                        UploadedTime        = CurrentDate
                    };
                    repo.Add(ObjectFile);
                }
            }
            //var ImageFileLocationArray = ImageFileLocationPaths.ToArray();
            return(RedirectToAction("UploadCompelete"));
        }