Пример #1
0
        public async Task Upload(IFormFile file, string email)
        {
            var owner = _unitOfWork.Users.All(nameof(User.Possessions))
                        .SingleOrDefault(u => u.Email == email);

            var fileName = await CreateFile(file, owner);

            var now   = DateTime.Now;
            var model = new Core.Models.File
            {
                FileName     = fileName,
                Path         = Path.Combine(_hostingEnvironment.ContentRootPath, Constants.FileStorageFolderName, owner.Email),
                Created      = now,
                LastModified = now,
                Owner        = owner
            };

            _unitOfWork.Files.Add(model);
            owner.Possessions.Add(new Possession
            {
                User = owner,
                File = model
            });

            await _unitOfWork.SaveChangesAsync();
        }
        private Core.Models.File GetFile(int documentId, int versionId, HttpPostedFileBase hpf)
        {
            string fileName = hpf.FileName;
            string relativeLocation = Path.Combine(
                documentId.ToString(),
                Path.Combine(versionId.ToString(), fileName));

            string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
            string uploadFolder = Path.Combine(baseDirectory, Path.Combine(UPLOAD_FOLDER,Path.Combine(documentId.ToString(),versionId.ToString())));

            string physicalLocation = Path.Combine(uploadFolder, fileName);

            if (!Directory.Exists(uploadFolder))
            {
                Directory.CreateDirectory(uploadFolder);
            }

            string fileExtension = GetFileExtension(hpf.FileName);

            hpf.SaveAs(physicalLocation);

            var newFile = new Core.Models.File();
            newFile.ContentType = hpf.ContentType;
            newFile.FileExtension = fileExtension;
            newFile.FileName = fileName;
            newFile.FileLocation = relativeLocation;
            newFile.FileSize = hpf.ContentLength;

            return newFile;
        }