/// <summary> /// Сохранение файла /// </summary> /// <param name="stream"></param> /// <param name="fileName"></param> /// <param name="userIdentityid"></param> /// <returns></returns> private async Task <long> SaveFile(Stream stream, string fileName, int userIdentityid) { if (stream == null) { throw new Exception("Входной поток не определен"); } //проверяем директорию на существование //в случае отсутствия - создаем if (!Directory.Exists(_fileStorage)) { Directory.CreateDirectory(_fileStorage); } using (var context = new ApplicationDbContext()) { var storedName = DateTime.Now.GetHashCode().ToString("x") + Path.GetExtension(fileName); //создаем сущность файла var exchangeFile = new ExchangeFile { UserIdentityId = userIdentityid, FileName = fileName, StoredName = storedName, StartTime = DateTime.Now, Progress = 0.01m, Organization = context.Employee.Where(x => x.ApplicationUser.Id == userIdentityid) .Select(x => x.Organization) .FirstOrDefault() ?? context.Abonent.Where(x => x.ApplicationUser.Id == userIdentityid) .Select(x => x.Organization) .FirstOrDefault() }; context.ExchangeFiles.Add(exchangeFile); await context.SaveChangesAsync(); //названием файла на сервере будет "идентификатор файла"."расширение файла" в БД //сохраняем файл в файловое хранилище using ( var outStream = new FileStream(Path.Combine(_fileStorage, storedName), FileMode.CreateNew, FileAccess.Write)) { stream.CopyTo(outStream); outStream.Flush(); outStream.Close(); stream.Close(); stream.Dispose(); } return(exchangeFile.Id); } }
public errorCompositeType AddExchangeFile(ExchangeFileCompositeType tect) { errorCompositeType lstError = new errorCompositeType(); try { ExchangeFile te = new ExchangeFile(); te.InsertTaskExchange(tect); lstError.bError = true; lstError.sError = ""; return(lstError); } catch (Exception ex) { lstError.bError = false; lstError.sError = ex.Message; return(lstError); } }