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; }